C# ASP.NETMVC中的自定义错误
我试图在ASP.NETMVC应用程序中设置自定义错误处理。在Web.config中,我有以下内容: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"/>
<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>