Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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# ASP.NETMVC中的自定义错误_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Custom Error Pages - Fatal编程技术网

C# ASP.NETMVC中的自定义错误

C# ASP.NETMVC中的自定义错误,c#,asp.net,asp.net-mvc,asp.net-mvc-4,custom-error-pages,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Custom Error Pages,我试图在ASP.NETMVC应用程序中设置自定义错误处理。在Web.config中,我有以下内容: <system.web> <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error/page500.aspx"> <error statusCode="404" redirect="~/Error/page404.aspx"/>

我试图在ASP.NETMVC应用程序中设置自定义错误处理。在Web.config中,我有以下内容:

  <system.web>
    <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error/page500.aspx">
      <error statusCode="404" redirect="~/Error/page404.aspx"/>
      <error statusCode="500" redirect="~/Error/page500.aspx"/>
    </customErrors>
我可以看到我的404自定义错误页面

当我尝试url时

http://localhost:49376/private/aaa<
我得到了IIS默认错误页面。当我尝试的时候

http://localhost:49376/private/aaa<script></script> 
http://localhost:49376/private/aaa 
我得到运行时默认错误页面


我错过了什么

我不确定,但可能是你的elmah配置。请在此处阅读更多信息,特别是在评论部分:

我认为这是一个已知的Elmah问题,如果您设置的配置有点错误

长话短说,在你的配置中试试这个:

<location path="elmah.axd">
  <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error/page500.aspx">
  <error statusCode="404" redirect="~/Error/page404.aspx"/>
  <error statusCode="500" redirect="~/Error/page500.aspx"/>
</customErrors>
  <system.web>
    <httpHandlers>
      <add verb="POST,GET,HEAD" path="elmah.axd" 
        type="Elmah.ErrorLogPageFactory, Elmah" />
    </httpHandlers>
    <authorization>
      <allow roles="Admin" />
      <deny users="*" />
    </authorization>
  </system.web>
  <system.webServer>
    <handlers>
      <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD"
        type="Elmah.ErrorLogPageFactory, Elmah"
        preCondition="integratedMode" />
    </handlers>
    <httpErrors errorMode="Custom" existingResponse="Replace">
    <clear/>
      <error statusCode="404" responseMode="File" path="/Error/page404.html"/>
      <error statusCode="500" responseMode="File" path="/Error/page500.html"/>
    </httpErrors>
  </system.webServer>
</location>


我不是100%确定,但我认为这是一个IIS保护问题,它会过滤某些url中可能包含无效或危险内容。但我仍然会看到该url的IIS默认错误页,如“”
http://localhost:49376/private/aaa/foo/bar
http://localhost:49376/private/aaa<script></script> 
<location path="elmah.axd">
  <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error/page500.aspx">
  <error statusCode="404" redirect="~/Error/page404.aspx"/>
  <error statusCode="500" redirect="~/Error/page500.aspx"/>
</customErrors>
  <system.web>
    <httpHandlers>
      <add verb="POST,GET,HEAD" path="elmah.axd" 
        type="Elmah.ErrorLogPageFactory, Elmah" />
    </httpHandlers>
    <authorization>
      <allow roles="Admin" />
      <deny users="*" />
    </authorization>
  </system.web>
  <system.webServer>
    <handlers>
      <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD"
        type="Elmah.ErrorLogPageFactory, Elmah"
        preCondition="integratedMode" />
    </handlers>
    <httpErrors errorMode="Custom" existingResponse="Replace">
    <clear/>
      <error statusCode="404" responseMode="File" path="/Error/page404.html"/>
      <error statusCode="500" responseMode="File" path="/Error/page500.html"/>
    </httpErrors>
  </system.webServer>
</location>