Кажется, что моя маршрутизация атрибутов в проекте Web API не работает.Я пытаюсь получить доступ:
http://localhost/ControlTower2WebAPI/api/PurchaseOrder/Test/attribute/routing/why/
или
http://localhost/ControlTower2WebAPI/api/PurchaseOrder/Test/attribute/routing/why
Я также пробовал F5 (отладка) в visual studio:
http://localhost:53915/api/PurchaseOrder/Test/attribute/routing/why http://localhost:53915/api/PurchaseOrder/Test/attribute/routing/why/
Ошибки те же:
Ошибка HTTP 404.0 - не найдено Требуемый ресурс удален, имел егоимя изменено или временно недоступно.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
var cors = new EnableCorsAttribute(origins: "*", headers: "*", methods: "*");
config.EnableCors(cors);
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
//set API to return JSON
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
}
}
Код:
[System.Web.Http.RoutePrefix("PurchaseOrder")]
public class PurchaseOrderController : ApiController
{
private static ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
[System.Web.Http.Route("Test/attribute/routing/{_input}")]
public JsonResult TestRoute(string _input)
{
try
{
JsonResult jsonResult = new JsonResult();
jsonResult.Data = new
{
messageFromParameter = _input
};
return jsonResult;
}
catch (Exception exception)
{
logger.Error("TestRoute", exception);
throw;
}
}
}
Соответствующий (?) Web.config:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<httpProtocol>
</httpProtocol>
<security>
<requestFiltering>
<requestLimits maxQueryString="1000000" />
</requestFiltering>
</security>
</system.webServer>