.NET WEBAPI 錯誤:An error has occurred.
阿新 • • 發佈:2018-12-05
在控制器上新增了一個介面,並在路由器上做了針對Action 的路由之後,發現舊介面突然不能使用,Azure 服務上的錯誤日誌寫的是:
Http Action - Response from host 'XXXXXXXXXXX.com.cn': 'InternalServerError' Response Headers: Pragma: no-cache Cache-Control: no-cache Date: Thu, 25 Oct 2018 06:00:20 GMT Set-Cookie: ARRAffinity=e1d887ee8262c10749997b5445c0c501b10cea1ba9dbf4998d85679550581d41;Path=/;HttpOnly;Domain=XXX.XXXX.XXXX..XX.CN.COM.CCC.XXXX Server: Microsoft-IIS/10.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Body: {"Message":"An error has occurred."}
查閱資料後知道該問題的產生是由於介面的路由配置有問題,存在相同引數的路由,因為預設路由是:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
當通過查詢到多個相同引數的方法時候,就不會去查詢Action 的Name,因此產生多個方法,伺服器不確定使用哪一個,因此無法正確執行方法的內容,因此,可以將方法刪掉保留,之後的方法使用:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "actionapi/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
或者可以直接刪除之前的方法,統一使用帶有Action 的路由配置,可解決問題 。