У меня есть проект asp.net MVC 5 с большим количеством контроллеров и веб-интерфейсом.Проблема в том, что когда я хочу получить доступ к одному из методов API, я получаю Не найден ресурс HTTP, который соответствует 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, я получаю сообщение об ошибке.
My Global.asax.cs is:
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){}
}
Очень странно, что если я добавлю маршрутизацию атрибутов для действий веб-API, они будут работать как положено.Например:
[Route("api/Files/DeleteAttachment/{fileName}")]
public void DeleteAttachment(string fileName){}
Я не хочу писать Route для каждого действия, потому что у меня много действий, и это делает код хрупким.Как я могу исправить маршрутизацию в таблице маршрутов?Спасибо.