我使用属性路由向我的WebApi添加了一个新的HttpPost路由“api / export / error /”,我收到一个错误:
找到了与URL匹配的多种控制器类型。如果多个控制器上的属性路由与请求的URL匹配,则会发生这种情况。\ r \ n \ r \ n请求已找到以下匹配的控制器类型:\ r \ nMyApp.Controllers.ExportErrorController \ r \ nMyApp.Controllers.ExportGeneratorController
但我在不同的控制器中没有相同的路线;这是这两个控制器中唯一的路由:
ExportErrorController.cs
[HttpGet]
[Route( "api/export/error/total/" )]
[HttpGet]
[Route( "api/export/error/channel/{channelId}/" )]
[HttpPost]
[Route( "api/export/error/" )]
[HttpDelete]
[Route( "api/export/error/{id}/" )]
[HttpPut]
[Route( "api/export/error/clear/" )]
ExportGeneratorController.cs
[HttpGet]
[Route( "api/2/export/{channelId}/" )]
[HttpPost]
[Route( "api/2/export/generate-word/{debugInfo}/" )]
[HttpPost]
[Route( "api/2/export/generate-excel/{debugInfo}/" )]
我看不到两个控制器之间有任何相同的地方
答案 0 :(得分:3)
显然ASP.Net在确定使用路径时不会评估参数'types'或方法,因此它找到并匹配路由文本“error”作为'channelid'的潜在参数,即使它们是不同的方法。
向参数添加类型有助于它正确解决它:
[Route( "api/2/export/{channelId}/" )]
通过将其更改为:
[Route( "api/2/export/{channelId:int}/" )]