【发布时间】:2018-06-26 07:44:06
【问题描述】:
我有一个带有大量控制器和 Web api 的 asp.net MVC 5 项目。问题是当我想访问其中一种 api 方法时,我得到 No HTTP resource was found that match the request URI ... 错误。
我在类似的帖子中尝试了所有解决方案,但我并不幸运。 这是我的 RouteConfig 文件:
public static void Register(HttpConfiguration config)
{
// Routing configs
config.MapHttpAttributeRoutes();
// Files api routs
config.Routes.MapHttpRoute(
name: "filesApi_1",
routeTemplate: "api/{controller}/{action}/{file}",
defaults: new object[]
{
new { controller = "Files", action ="SaveAttachment"}
}
);
config.Routes.MapHttpRoute(
name: "filesApi_2",
routeTemplate: "api/{controller}/{action}/{fileName}",
defaults:
new { controller = "Files", action = "DeleteAttachment" }
);
}
当我转到 htt://localhost:xxxx/api/Files/DeleteAttachment/file_name 时,我得到了错误。
我的 Global.asax.cs 是:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
Mapper.Initialize(c=> c.AddProfile<MappingProfile>());
}
控制器是:
public class FilesController : ApiController
{
public void SaveAttachment(HttpPostedFileBase file){}
public void DeleteAttachment(string fileName){}
}
很奇怪,如果我为 web api 操作添加属性路由,它们会按预期工作。例如:
[Route("api/Files/DeleteAttachment/{fileName}")]
public void DeleteAttachment(string fileName){}
我不想为每个操作都编写 Route,因为我有很多操作,这会使代码变得脆弱。如何修复路由表中的路由?谢谢。
【问题讨论】:
标签: c# asp.net-web-api routing