如何在ASP.NET MVC4 Web API中捕获未定义的api方法调用
ASP.NET / Mono MVC4 Web API v.1应用程序.
如何捕获未定义的api方法的调用. <Error> <Message> No HTTP resource was found that matches the request URI 'http:// localhost:52216/erp/api/undefinedmethod'. </Message> <MessageDetail> No type was found that matches the controller named 'undefinedmethod'. </MessageDetail> </Error> 如何捕获此错误以记录到数据库? How do I log ALL exceptions globally for a C# MVC4 WebAPI app? 但是仍然没有执行Application_Error和异常过滤器代码,返回错误 如果url没有api之类的话 'http://localhost:52216/erp/undefinedmethod' Application_Error正确执行. 使用VS2013 WebAPI项目模板的WebAPI配置: public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional } ); } 更新 我尝试改变了答案. <Error> <Message>Authorization has been denied for this request.</Message> </Error> 发生.如何捕获此错误呢? 解决方法
Imran Baloch撰写了一篇关于如何实现这一目标的文章.基本上你需要创建自己的HttpControllerSelector和HttpActionSelector.
You can find the article here.
编辑: 如果您的应用程序使用的路径不是WebApiConfig中注册的路由,则需要对路由进行一些更改.不是在Register方法的末尾定义Error404路由,而是定义一个新方法(RegisterNotFound)来注册路由: public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi",defaults: new { id = RouteParameter.Optional } ); } public static void RegisterNotFound(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "Error404",routeTemplate: "{*url}",defaults: new { controller = "Error",action = "Handle404" } ); } } 然后在Global.asax寄存器中调用此方法: protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); WebApiConfig.RegisterNotFound(GlobalConfiguration.Configuration); GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector),new HttpNotFoundAwareDefaultHttpControllerSelector(GlobalConfiguration.Configuration)); GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpActionSelector),new HttpNotFoundAwareControllerActionSelector()); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 从按钮单击处理程序中的代码隐藏执行ASP.NET成员身份登录
- asp.net-mvc-3 – 带有附加HTML的MVC3 Html.BeginForm()
- ASP.NET MVC和WCF
- asp.net-mvc – 提供DDD,但需要一些其优点
- asp.net-mvc – 在MVC中检查图像mime,大小等
- ASP.NET Core MVC 过滤器介绍
- asp.net – GridView BoundField打破长字符串
- asp.net – Razor base type / Templated Razor使用“using
- asp.net-mvc-3 – Glimpse.axd 403ing在IIS上
- vbscript – 尝试在.VBS文件中“包含”.ASP文件
- asp.net-mvc在post action中获取字典或如何将For
- asp.net – Orchard CMS和Sitefinity CMS
- asp.net-mvc – 卸载OWIN和Identity包
- asp.net-core – 重新挑战ASP.NET Core中经过身份
- .Net Core微服务入门全纪录(二)——Consul-服务
- asp.net – 跨应用程序的表单身份验证
- asp.net-mvc – ASP.NET MVC – 查看多个模型
- 在ASP.NET中,HTML指令符号<%#或<%= etc?在服务
- asp.net-mvc-2 – 引用用TextBoxFor()创建的控件
- One to One 的数据库模型设计与NHibernate配置