asp.net-mvc – 在Azure中启用自定义错误
发布时间:2020-12-16 00:02:03 所属栏目:asp.Net 来源:网络整理
导读:我无法设置IIS来为我的自定义错误页面提供MVC管道之外的错误.如果我在控制器中抛出一个异常,它就是所有文件,Application_Error事件处理: protected void Application_Error(object sender,EventArgs e) { var error = Server.GetLastError(); var routeData
我无法设置IIS来为我的自定义错误页面提供MVC管道之外的错误.如果我在控制器中抛出一个异常,它就是所有文件,Application_Error事件处理:
protected void Application_Error(object sender,EventArgs e) { var error = Server.GetLastError(); var routeData = new RouteData(); routeData.Values["Controller"] = "Error"; routeData.Values["Area"] = ""; routeData.Values["Exception"] = error; if (error is HttpException) { switch (((HttpException)error).GetHttpCode()) { case 401: routeData.Values["Action"] = "NotAllowed"; break; case 403: routeData.Values["Action"] = "NotAllowed"; break; case 404: routeData.Values["Action"] = "NotFound"; break; default: routeData.Values["Action"] = "ServerError"; break; } } else { routeData.Values["Action"] = "ServerError"; } Response.Clear(); Server.ClearError(); IController controller = new ErrorController(); controller.Execute(new RequestContext(new HttpContextWrapper(((MvcApplication)sender).Context),routeData)); } 但是,如果我浏览到一个不存在的URL,IIS将处理404错误(或任何其他错误),给我标准的IIS错误消息,并完全忽略我的web.config设置: <system.web> <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/error"> <error statusCode="401" redirect="/error/notallowed" /> <error statusCode="403" redirect="/error/notallowed" /> <error statusCode="404" redirect="/error/notfound" /> <error statusCode="500" redirect="/error/servererror" /> </customErrors> </system.web> <system.webServer> <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL"> <clear /> <error statusCode="401" path="/error/notallowed" /> <error statusCode="403" path="/error/notallowed" /> <error statusCode="404" path="/error/notfound" /> <error statusCode="500" path="/error/servererror" /> </httpErrors> </system.webServer> / error / *由我的应用程序内的控制器处理.我该怎么做才能使IIS执行自定义错误路径,而不是给我标准的错误页面? 这是在Azure上运行的ASP.NET MVC 3.它在直接IIS下也不起作用,但开发服务器确实执行控制器. 解决方法
IIS不尊重defaultResponseMode.您必须将responseMode添加到每个错误中,如下所示:
<httpErrors errorMode="Custom"> <clear /> <error statusCode="401" path="/error/notallowed" responseMode="ExecuteURL" /> <error statusCode="403" path="/error/notallowed" responseMode="ExecuteURL" /> <error statusCode="404" path="/error/notfound" responseMode="ExecuteURL" /> <error statusCode="500" path="/error/servererror" responseMode="ExecuteURL" /> </httpErrors> 为什么默认不适用超出我的范围. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 在服务器端管理不断增长的CSS样式表 – 是否有任
- asp.net – 通过sql servers SP在aspnet成员中添加用户和分
- asp.net-mvc-3 – 跨多个控制器操作保持值
- asp.net-mvc – 在IIS 7.5中返回404的MVC视图
- ASP.NET Web.Config转换问题
- 在ASP.NET Identity中添加角色
- asp.net – 对齐和填充为asp:CheckBoxList
- asp.net-mvc – Server 2008 R2上的MVC – 如何?
- asp.net-web-api – 如何存储Web API访问令牌?
- 如何在asp.net c#中计算网站访问者数量