Я получаю сообщение об ошибке 404 при попытке вызвать следующий метод со следующим URLWeb Api 2 404 ошибка
[HttpGet]
[Route("api/Trinity/GetDirectoryAndTask/{modelTemplateId}/{taskName}")]
public KeyValuePair<string, string> GetDirectoriesAndTasks(int modelTemplateId, string taskName)
http://localhost:46789/api/Trinity/GetDirectoryAndTask/9/Tax+H%3a+AG43SS+GMIB%3b+no+fpws%3b+d%26r
Этот URL приходит от вызова HttpUtility.UrlEncode() на строка «Налог H: AG43SS GMIB, нет fpws; d & r". Если есть еще один способ выполнить передачу этой строки, я также открыт для этого.
метод отлично работает, если я называю это Ith с «простым» имя задачи, как так
http://localhost:46789/api/Trinity/GetDirectoryAndTask/9/Roth
Я установил NuGet пакет RouteDebugger, но это было не очень полезно. Для полноты вот мой WebApiConfig.cs файл
using System.Web.Http;
namespace DbService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
MapRoutes(config);
}
private static void MapRoutes(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
}
}
}
и RouteConfig.cs файл
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace DbService
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
Он работает для имени этой задачи, но теперь он не работает для имени задачи «AG33/34», должен ли я задать новый вопрос или отредактировать его? – reggaeguitar
Он возвращает вам другую ошибку. Если вы используете подходящую кодировку url, вы не получите эту ошибку. Вы должны использовать% 2F вместо /. Как% 3a и% 3b и ... –
Я использую HttpUtility.UrlEncode, он возвращает «AG33% 2f34» для «AG33/34», теперь я получаю это исключение «Нет MediaTypeFormatter доступен для чтения объекта введите «KeyValuePair'2» из контента с типом мультимедиа «text/html». » – reggaeguitar