Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTTP错误404.0-在MVC 5中找不到_C#_Asp.net_Asp.net Mvc 5_Http Status Code 404_Custom Error Pages - Fatal编程技术网

C# HTTP错误404.0-在MVC 5中找不到

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

我在MVC5中的项目。我想处理404。我做了,但问题是

当我使用以下URL访问视图时,一切正常,如预期:

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
重定向到您的自定义页面?我不知道如何执行此操作,