asp.net - 显示危险请求的友好错误页面
问题描述
我的 ASP .Net 网站的 web.config 配置为
<system.web>
.....
<customErrors mode="RemoteOnly">
<error statusCode="500" redirect="/500/" />
</customErrors>
<system.webServer>
....
<httpErrors>
<remove statusCode="400" subStatusCode="-1" />
<remove statusCode="401" subStatusCode="-1" />
<remove statusCode="403" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="400" path="/404/" responseMode="Redirect" />
<error statusCode="401" path="/404/" responseMode="Redirect" />
<error statusCode="403" path="/404/" responseMode="ExecuteURL" />
<error statusCode="404" path="/404/" responseMode="ExecuteURL" />
<error statusCode="500" path="/500/" responseMode="ExecuteURL" />
</httpErrors>
我测试了一个 404 页面并显示了我的友好错误页面,但是当我将 < 添加到我认为返回 400 响应的 URL 时,我只得到 YSOD(黄屏死机)而不是预期的友好页面?
我错过了什么?
解决方案
添加'<' 到 URL 会导致 Dotnet 代码错误,可以通过自定义错误功能捕获。
<customErrors mode="On" defaultRedirect="/MyError1.html" redirectMode="ResponseRedirect">
<error statusCode="400" redirect="/MyError400.html" />
<!--<error statusCode="401" redirect="/MyError2.html" />
<error statusCode="403" redirect="/MyError2.html" />
<error statusCode="404" redirect="/MyError2.html" />
<error statusCode="500" redirect="/MyError2.html" />-->
</customErrors>
就我而言,我通常将该custom error
功能与http error
处理错误的功能结合起来,因为 IIS 和 DotNet 代码都可能引发异常。它还可以避免YSOD
.
<customErrors mode="On" defaultRedirect="/MyError1.html" redirectMode="ResponseRedirect">
<error statusCode="400" redirect="/MyError400.html" />
<!--<error statusCode="401" redirect="/MyError2.html" />
<error statusCode="403" redirect="/MyError2.html" />
<error statusCode="404" redirect="/MyError2.html" />
<error statusCode="500" redirect="/MyError2.html" />-->
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Auto">
<remove statusCode="400" />
<remove statusCode="401" />
<remove statusCode="403" />
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="400" path="MyError.html" responseMode="File" />
<error statusCode="401" path="MyError.html" responseMode="File" />
<error statusCode="403" path="MyError.html" responseMode="File" />
<error statusCode="404" path="MyError.html" responseMode="File" />
<error statusCode="500" path="MyError.html" responseMode="File" />
</httpErrors>
</system.webServer>
结果。
更多细节。customErrors 和 httpErrors 有什么区别?
如果有什么我可以帮忙的,请随时告诉我。
推荐阅读
- c# - 子类到父类对象引用未设置为对象 C# 的实例
- html - 如何覆盖 CSS 的 * 选择器以更改身体的背景颜色?
- java - 快速排序算法的计数器
- python - 尝试有条件地将元组列表中的元组附加到字典中的元组子列表
- javascript - 为什么
在 JS 中创建一个新行和 \n 失败 - azure - Connect-AzureRmAccount:无法在 DLL“iphlpapi.dll”中找到名为“GetPerAdapterInfo”的入口点
- php - 将字符串多次分解成多维数组
- python - 如何为 python 2.7 安装 pip?
- css - 为什么下面的canvas和div元素之间有间隔?
- java - TwinML Java 说:西里尔字母不读