Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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错误的动态自定义错误页?_C#_Asp.net Mvc_Http Error_Iis 10 - Fatal编程技术网

C# 如何显示所有http错误的动态自定义错误页?

C# 如何显示所有http错误的动态自定义错误页?,c#,asp.net-mvc,http-error,iis-10,C#,Asp.net Mvc,Http Error,Iis 10,我需要一个自定义错误页面来处理所有http错误。当http错误发生时,页面应该显示自定义页面,并且必须根据http错误状态代码动态生成其内容。 当出现特定的http错误时,我成功地显示了一个自定义html。例如404。但有两个问题。 1.我需要重定向到.cshtml,以便对响应进行一些处理,并根据http错误状态代码创建内容。 2.我需要一个方法将所有错误重定向到此.cshtml文件 我已经阅读了文档,并在SO中搜索了类似的问题,然后全部跟进,没有任何进展 目前我在web.config中有以下几

我需要一个自定义错误页面来处理所有http错误。当http错误发生时,页面应该显示自定义页面,并且必须根据http错误状态代码动态生成其内容。 当出现特定的http错误时,我成功地显示了一个自定义html。例如404。但有两个问题。 1.我需要重定向到.cshtml,以便对响应进行一些处理,并根据http错误状态代码创建内容。 2.我需要一个方法将所有错误重定向到此.cshtml文件

我已经阅读了文档,并在SO中搜索了类似的问题,然后全部跟进,没有任何进展

目前我在
web.config
中有以下几行:

    <httpErrors errorMode="Custom" defaultResponseMode="File" defaultPath="CustomError.htm">
      <clear />
      <error path="CustomError.htm" responseMode="File" statusCode="403"/>
    </httpErrors>
但它不显示CustomError.htm文件的内容,而是显示一个空白页面,其中包含以下句子:
您没有查看此目录或页面的权限。
即使是处理一个httpError,我在使用.cshtml时也遇到了麻烦,我不得不使用一个html文件。 我实际上有以下cshtml文件:
Views/Error/PageNotFound.cshtml
它有一个控制器和一个名为:
PageNotFound
的actionResult方法,现在,当我执行此操作时:

    <httpErrors errorMode="Custom" defaultResponseMode="File" defaultPath="CustomError.htm">
      <clear />
      <error path="~/Error/PageNotFound" responseMode="ExecuteURL" statusCode="404"/>
    </httpErrors>

然后,浏览器抛出一个未找到的错误

当我将
responseMode
更改为
Redirect
时,路径会一次又一次地附加到现有的url中,并且无法工作。 正如您在标记中看到的,我正在windows 10上使用asp.net mvc和IIS 10。
有什么帮助吗?

我不能100%确定我是否正确理解了您,但请尝试一下这段代码,并将其用于我的自定义错误,我100%确定它能正常工作

<customErrors mode="Off" defaultRedirect="/Error/Default">
  <error statusCode="404" redirect="/Error/E404" />
  <error statusCode="500" redirect="/Error/E500" />
  <error statusCode="403" redirect="/Error/E403" />
</customErrors>


您可以在进入arm时添加更多状态代码,请浏览以下链接


我希望,重写“OneException”方法可以帮助您解决问题。

有关详细信息,请访问以下线程customErrors在IIS 7.5+中对静态页面不起作用。defaultRedirect对您也有效吗?例如,如果出现403错误,是否会显示/error/default的内容,或者您将获得默认页面?如果未列出,则将在所有错误上显示defaultRedirect。如果您希望显示403的特定错误页面,则需要将以下代码添加到customerrors
<customErrors mode="Off" defaultRedirect="/Error/Default">
  <error statusCode="404" redirect="/Error/E404" />
  <error statusCode="500" redirect="/Error/E500" />
  <error statusCode="403" redirect="/Error/E403" />
</customErrors>