我正在使用Web API 2.现在我的路由表是
public void RegisterRoute(HttpRouteCollection routes) {
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
这适用于网址:
http://localhost/api/user
http://localhost/api/user/4
当我指定不存在控制器名称(http://localhost/api/abcd
)时,结果为JSON
{"message":"No HTTP resource was found that matches the request URI 'http://loocalhost/api/abc'."}
我需要为url返回相同的结果:
http://localhost/api/abc/abc/abc/abc
http://localhost/abc/abc/abc/abc
http://localhost/a
现在我有了
如何为所有不匹配的路由返回带有404代码的JSON?
注意:某些操作(如http://localhost/api/user/4
)也可以返回404,并且正文中包含一些数据。因此,如果路线不匹配,我需要有可能处理动作404和404.
请建议。我试过这个
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error/Missing" />
</httpErrors>
但是返回404的操作也会重定向到/Error/Missing
答案 0 :(得分:0)
你需要为此设置默认值,目前只将ID字段视为默认值而不是控制器。像这样更新你的默认路线
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });