我一直在抨击我的头几天没有到达任何地方。我希望有一个捕获所有错误处理程序,重定向到控制器,向用户显示一个整洁的页面,以及执行相关的日志记录等。
问题是一切都在本地工作得很好,但是当我上传到azure时,我会得到标准的错误页面。
似乎azure没有执行重定向,也忽略了global.asax中的全局处理程序。
我没有在这里包含错误控制器的代码,因为我似乎永远不会那么远。
Web.Config中:
<customErrors mode="On" defaultRedirect="/error" redirectMode="ResponseRewrite"></customErrors>
路线入口:
routes.MapRoute("Error", "error/{*fluff}", new { controller = "Error", action = "Index", exception = new HttpException(404,"Direct call to controller") });
来自global.asax:
protected void Application_Error(object sender, EventArgs e)
{
var routeData = new RouteData();
routeData.Values["controller"] = "Error";
routeData.Values["action"] = "index";
routeData.Values["exception"] = Server.GetLastError();
Response.Clear();
Server.ClearError();
IController controller = new ErrorController();
controller.Execute(new RequestContext(new HttpContextWrapper(((MvcApplication)sender).Context), routeData));
}
答案 0 :(得分:5)
这就是诀窍:
Response.TrySkipIisCustomErrors = true;
答案 1 :(得分:4)
尝试将existingResponse设置为PassThrough,如下所示:
<httpErrors existingResponse="PassThrough"/>
来源:http://blog.dezfowler.com/2010/09/aspnet-custom-error-not-shown-in-azure.html