asp.net-mvc-4 – 在MVC4中捕获404错误
发布时间:2020-05-23 22:10:47 所属栏目:asp.Net 来源:互联网
导读:我有一个问题,因为HTTP错误404.0 – 未找到.我打开了 customErrors mode=On defaultRedirect=~/Error/General error statusCode=404 redirect=~/Error/HttpError404 / error statusCode=500 redirect=~/Er
|
我有一个问题,因为HTTP错误404.0 – 未找到.我打开了 <customErrors mode="On" defaultRedirect="~/Error/General">
<error statusCode="404" redirect="~/Error/HttpError404" />
<error statusCode="500" redirect="~/Error/HttpError500" />
</customErrors>
在Web.Config中.但问题仍然存在.我也试过这个解决方案(但它永远不会到达方法): protected void Application_Error()
{
var exception = Server.GetLastError();
var httpException = exception as HttpException;
Response.Clear();
Server.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "Errors";
routeData.Values["action"] = "General";
routeData.Values["exception"] = exception;
Response.StatusCode = 500;
if (httpException != null)
{
Response.StatusCode = httpException.GetHttpCode();
switch (Response.StatusCode)
{
case 403:
routeData.Values["action"] = "HttpError404";
break;
case 404:
routeData.Values["action"] = "HttpError404";
break;
}
}
IController errorsController = new ErrorController();
var rc = new RequestContext(new HttpContextWrapper(Context),routeData);
errorsController.Execute(rc);
}
由@Darin Dimitrov提供 这是控制器: public class ErrorController : Controller
{
public ActionResult HttpError404(string error)
{
ViewData["Title"] = "Sorry,an error occurred while processing your request. (404)";
ViewData["Description"] = error;
return View("Index");
}
public ActionResult HttpError500(string error)
{
ViewData["Title"] = "Sorry,an error occurred while processing your request. (500)";
ViewData["Description"] = error;
return View("Index");
}
public ActionResult General(string error)
{
ViewData["Title"] = "Sorry,an error occurred while processing your request.";
ViewData["Description"] = error;
return this.View();
}
解决方法好的,我找到了一个解决方案,感谢@ alistair-findlay和 this website.这就是web.config现在的样子: <system.web>
<customErrors mode="On" defaultRedirect="~/Error/General" redirectMode="ResponseRewrite">
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Detailed" defaultResponseMode="Redirect">
<clear/>
<error statusCode="404" path="/Error/HttpError404"/>
</httpErrors>
</system.webServer
这是Global.asax.cs: protected void Application_Error()
{
if (Context.IsCustomErrorEnabled)
ShowCustomErrorPage(Server.GetLastError());
}
private void ShowCustomErrorPage(Exception exception)
{
var httpException = exception as HttpException ?? new HttpException(500,"Internal Server Error",exception);
Response.Clear();
var routeData = new RouteData();
routeData.Values.Add("controller","Error");
routeData.Values.Add("fromAppErrorEvent",true);
switch (httpException.GetHttpCode())
{
case 403:
routeData.Values.Add("action","HttpError403");
break;
case 404:
routeData.Values.Add("action","HttpError404");
break;
case 500:
routeData.Values.Add("action","HttpError500");
break;
default:
routeData.Values.Add("action","GeneralError");
routeData.Values.Add("httpStatusCode",httpException.GetHttpCode());
break;
}
Server.ClearError();
IController controller = new ErrorController();
controller.Execute(new RequestContext(new HttpContextWrapper(Context),routeData));
}
最后: public class ErrorController : Controller
{
public ActionResult HttpError403(string error)
{
ViewBag.Description = error;
return this.View();
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 使用自定义格式的ASP.NET MVC ViewModel映射
- asp.net-mvc – 如何在ASP.NET MVC中将多个对象传递给ViewP
- asp.net-mvc – 使用浏览器栏将列表传递给MVC Web API方法
- asp.net-mvc – 导航菜单中突出显示在Asp.NET MVC?
- asp.net-core – ASP.Net 5类库中的EntityFramework命令?
- asp.net-mvc – 如何在ASP.NET MVC视图中使用扩展方法?
- asp.net – 如何获取控制器和操作名称在OnActionExecuting?
- 使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法
- asp.net-mvc – 在控制器中创建操作链接
- ASP.NET中的BackgroundWorker线程
推荐文章
站长推荐
- 在ASP.net中使用image404和azurereader2
- asp.net-mvc – ASP.NET MVC用户友好401错误
- ASP.NET多线程如何?
- asp.net – 如何判断一个方法是否在UpdatePanel回
- asp.net-mvc-3 – 不能使用NuGet PagedList ASP.
- IIS“SendResponse”状态下的请求已停留很长时间
- asp.net – 为什么DataBind()方法是必要的?
- 如何从ASP.NET MVC视图显示存储在数据库中的HTML
- asp.net-mvc – ASP.NET MVC – CustomeAuthoriz
- asp.net-mvc – 获取Controller.OnException中的
热点阅读
