我创建了一个非常简单的 ASP.NET MVC 5 应用程序,我想在其中处理我的 404 异常Application_Error
如图所示这个问题 https://stackoverflow.com/questions/7501810/net-mvc-how-to-fire-a-error-for-application-error-manage-them and 在另一个答案中 https://stackoverflow.com/questions/619895/how-can-i-properly-handle-404-in-asp-net-mvc/620559#620559。但是当我尝试访问一个不存在的页面时(并期望显示我的 404 页面)我的自定义错误页面的源代码以纯文本形式显示!.
我不希望我的网址被重写为在这篇文章中 https://stackoverflow.com/questions/1171035/asp-net-mvc-custom-error-handling-application-error-global-asax
我的项目非常简单。我刚刚添加了一个基本的ASP.NET WebApplication with Razor
:
- an
ErrorsController.cs
- a view
Http404.cshtml
- 并编辑了
Global.asax
如下所示:
项目组织:
全局.asax:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{}
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
HttpException httpException = exception as HttpException;
RouteData routeData = new RouteData();
routeData.Values.Add("controller", "Errors");
if (httpException == null)
{
routeData.Values.Add("action", "Index");
}
else
{
switch (httpException.GetHttpCode())
{
case 404:
routeData.Values.Add("action", "Http404");
break;
}
}
Response.Clear();
Server.ClearError();
Response.TrySkipIisCustomErrors = true;
IController errorController = new ErrorsController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
}
错误控制器.cs:
public class ErrorsController : Controller
{
public ActionResult Http404(string url)
{
return View("Http404");
}
}
http404.cshtml
@{
ViewBag.Title = "Page not found";
}
<h2>Page not found</h2>
但是当我尝试访问一个不存在的页面时,我看到的所有内容都是 404 页面的源代码:不存在页面的输出:
我在 stackoverflow 和其他网站上搜索了几个小时,但没有找到任何可以帮助我的东西。
有些人使用非常相似的代码来处理 404 异常,但没有得到相同的结果。我真的很困惑,我希望有人可以帮助我,或者至少向我展示一种比这个答案 https://stackoverflow.com/questions/619895/how-can-i-properly-handle-404-in-asp-net-mvc/2577095#2577095处理 ASP.NET MVC 5 中的 404 异常。