我正在尝试捕获由Asp.net Web API服务器返回的404错误。
但是,Global.asax中的Application_Error
没有抓住它们。
有没有办法处理这些错误?
答案 0 :(得分:9)
您可能需要查看具有分步示例的Handling HTTP 404 Error in ASP.NET Web API
答案 1 :(得分:1)
我知道这已经过时了,但我也只是在寻找这个,并找到了一种似乎很有效的方法,所以我想加上这可以帮助别人。
我发现,对我有用的解决方案是here。此外,这可以与属性路由(我使用)混合使用。
所以,在我的(Owin)Startup
课程中,我只添加了类似的东西。
public void Configuration(IAppBuilder app)
{
HttpConfiguration httpConfig = new HttpConfiguration();
//.. other config
app.UseWebApi(httpConfig);
//...
// The I added this to the end as suggested in the linked post
httpConfig.Routes.MapHttpRoute(
name: "ResourceNotFound",
routeTemplate: "{*uri}",
defaults: new { controller = "Default", uri = RouteParameter.Optional });
// ...
}
// Add the controller and any verbs we want to trap
public class DefaultController : ApiController
{
public IHttpActionResult Get(string uri)
{
return this.NotFound();
}
public HttpResponseMessage Post(string uri)
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.NotFound, "I am not found");
return response;
}
}
上面你可以返回任何错误对象(在这个例子中,我只是为我的POST返回一个字符串“我找不到”。
我按照@Catalin的建议尝试了xxyyzz
(没有命名控制器前缀),这也很有用。