C# HTTP错误404.0-在MVC 5中找不到
我在MVC5中的项目。我想处理404。我做了,但问题是 当我使用以下URL访问视图时,一切正常,如预期:C# HTTP错误404.0-在MVC 5中找不到,c#,asp.net,asp.net-mvc-5,http-status-code-404,custom-error-pages,C#,Asp.net,Asp.net Mvc 5,Http Status Code 404,Custom Error Pages,我在MVC5中的项目。我想处理404。我做了,但问题是 当我使用以下URL访问视图时,一切正常,如预期: http://localhost/Hotels/Index30701000000 但是当我使用下面的URL访问视图时,会收到404.0错误消息(错误如下所示) 错误:HTTP错误404.0-未找到您正在查找的资源已被删除、名称已更改或暂时不可用。 我的代码是 控制器 public class ErrorController : Controller { // GET: Error
http://localhost/Hotels/Index30701000000
但是当我使用下面的URL访问视图时,会收到404.0错误消息(错误如下所示)
错误:HTTP错误404.0-未找到您正在查找的资源已被删除、名称已更改或暂时不可用。
我的代码是
控制器
public class ErrorController : Controller
{
// GET: Error
public ActionResult Unauthorized()
{
Response.StatusCode = 404;
Response.TrySkipIisCustomErrors = true;
return View();
}
}
RouteConfig
routes.MapRoute(
name: "Unauthorized",
url: "Unauthorized/{action}/{id}",
defaults: new
{
controller = "Error",
action = "Unauthorized",
id = UrlParameter.Optional
}
);
<system.web>
<customErrors mode="On" defaultRedirect="Error">
<error statusCode="404" redirect="Unauthorized" />
</customErrors>
</system.web>
Global.asax
protected void Application_Error()
{
Exception exception = Server.GetLastError();
HttpException httpException = exception as HttpException;
}
网络配置
routes.MapRoute(
name: "Unauthorized",
url: "Unauthorized/{action}/{id}",
defaults: new
{
controller = "Error",
action = "Unauthorized",
id = UrlParameter.Optional
}
);
<system.web>
<customErrors mode="On" defaultRedirect="Error">
<error statusCode="404" redirect="Unauthorized" />
</customErrors>
</system.web>
查看//Unauthorized.cshtml
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Unauthorized";
}
<h1>Page Not Found!</h1>
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title=“未经授权”;
}
找不到页面!
只需在应用程序的global.asax文件中编写这些代码行
另一种方法是在ErrorController中定义错误页面,然后在web.config中使用system.WebServer下的httpError部分
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
<remove statusCode="500" />
<error statusCode="500" responseMode="ExecuteURL" path="/Error/Error" />
</httpErrors>
上面的代码是用来测试自定义页面的。但是在您的开发环境中,您可以使用errorMode=“DetailedLocalOnly”和existingResponse=“Auto”替换Custom,这样您仍然可以看到错误的详细信息
我最近写了一篇关于它的帖子,它附带了一个示例演示项目,可以在GitHub上使用 我不知道如何在
C#
中执行此操作,但为什么不编辑服务器设置,使其将每个404
重定向到您的自定义页面?我不知道如何执行此操作,