ASP.net web api 2 路由属性不工作
ASP.net web api 2 Route-Attribute not working
我有以下问题,我的路由属性不起作用。
我有以下操作:
[HttpGet]
[Route("~api/admin/template/{fileName}")]
public HttpResponseMessage Template(string fileName)
{
return CreateHtmlResponse(fileName);
}
并且我想访问像 .../api/admin/template/login.html
这样的操作,以便模板获得 login.html 作为文件名传递。
但我总是得到:No HTTP resource was found that matches the request URI 'http://localhost:50121/api/admin/template/login.html'
。
以下请求有效:/api/admin/template?fileName=login.html
有谁知道我的路由有什么问题吗?
编辑:
我的路由配置
config.Routes.MapHttpRoute(
"API Default", "api/{controller}/{action}",
new { id = RouteParameter.Optional });
在您的 WebApiConfig
中尝试此路由
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
您必须添加 RoutePrefix
。
您必须调用 MapHttpAttributeRoutes()
以便框架能够遍历您的属性并在应用程序启动时注册适当的路由:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
// you can add manual routes as well
//config.Routes.MapHttpRoute(...
}
}
见MSDN
try adding a forward slash after the tilde
[HttpGet]
[Route("~/api/admin/template/{fileName}")]
public HttpResponseMessage Template(string fileName)
{
return CreateHtmlResponse(fileName);
}
对于我的 Web API 2 项目,我必须向控制器添加一个 [RoutePrefix("events")]
以使其获取操作路由属性。
检查您的路由属性的命名空间。应该是 System.Web.Http 而不是 System.Web.Mvc.
在我的例子中,我将 Route("api/dashboard")
添加到 api 控制器。
将其更改为 RoutePrefix("api/dashboard")
。它完美地工作。
你还需要 config.MapHttpAttributeRoutes();
在 webapiconfig.cs
确认您使用的是 System.Web.Http.RouteAttribute
而不是 System.Web.Mvc.RouteAttribute
我有以下问题,我的路由属性不起作用。
我有以下操作:
[HttpGet]
[Route("~api/admin/template/{fileName}")]
public HttpResponseMessage Template(string fileName)
{
return CreateHtmlResponse(fileName);
}
并且我想访问像 .../api/admin/template/login.html
这样的操作,以便模板获得 login.html 作为文件名传递。
但我总是得到:No HTTP resource was found that matches the request URI 'http://localhost:50121/api/admin/template/login.html'
。
以下请求有效:/api/admin/template?fileName=login.html
有谁知道我的路由有什么问题吗?
编辑:
我的路由配置
config.Routes.MapHttpRoute(
"API Default", "api/{controller}/{action}",
new { id = RouteParameter.Optional });
在您的 WebApiConfig
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
您必须添加 RoutePrefix
。
您必须调用 MapHttpAttributeRoutes()
以便框架能够遍历您的属性并在应用程序启动时注册适当的路由:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
// you can add manual routes as well
//config.Routes.MapHttpRoute(...
}
}
见MSDN
try adding a forward slash after the tilde
[HttpGet]
[Route("~/api/admin/template/{fileName}")]
public HttpResponseMessage Template(string fileName)
{
return CreateHtmlResponse(fileName);
}
对于我的 Web API 2 项目,我必须向控制器添加一个 [RoutePrefix("events")]
以使其获取操作路由属性。
检查您的路由属性的命名空间。应该是 System.Web.Http 而不是 System.Web.Mvc.
在我的例子中,我将 Route("api/dashboard")
添加到 api 控制器。
将其更改为 RoutePrefix("api/dashboard")
。它完美地工作。
你还需要 config.MapHttpAttributeRoutes();
在 webapiconfig.cs
确认您使用的是 System.Web.Http.RouteAttribute
而不是 System.Web.Mvc.RouteAttribute