我有位于服务器上的asp.net Web应用程序我想避免来自我的网站的所有自定义和服务器错误。
为此,我使用了
<customErrors mode="RemoteOnly" defaultRedirect="~/ErrorPage/TryAgainLater.aspx"> <error redirect="~/ErrorPage/PageNotFound.aspx" statusCode="404"/> </customErrors>
使用上面的代码可以避免一些问题。即
假设我的网站提供了“http://Exaple.com/Careers.aspx”页面
案例1. http://Exaple.com/Careersss.aspx“按照上述规则,它的工作正确”。
案例2. http://Exaple.com/!@##Careersss.aspx“不工作” 注意:这里我添加了特殊字符
案例3:http://Exaple.com/Careersss.aspxxxx“不工作” 注意:在“.aspx”
之后添加字符案例4:http://Exaple.com/Careersss.aspx/!@!@!@! “这不是设计打破在这里”。 注意:添加带有特殊字符的“/”。
当用户获得案例2,3,4时请帮助我,然后他们会自动重定向到错误页面。
先谢谢。
答案 0 :(得分:1)
对于上述问题,我们必须更改IIS设置,请参阅:
http://www.braintrove.com/id/46/page/2#Configure-IIS-for-custom-error-pages
http://blogs.msdn.com/b/webtopics/archive/2008/05/28/iis-7-0-http-error-pages.aspx
答案 1 :(得分:1)
如果您不想更改IIS设置,可以在Global.asax中为404错误安装自己的处理程序。只需将此方法添加到我们的Global.asax.cs代码隐藏文件中:
protected void Application_EndRequest(object sender, EventArgs e)
{
HttpResponse response = HttpContext.Current.Response;
if (response.StatusCode == 404 && response.SubStatusCode == 0)
{
response.Redirect("/test/TryAgainLater.aspx?error=NotFound");
response.End();
}
}
如果它没有解决问题并且您仍然收到404错误页面,请将此设置添加到您的web.config文件中:
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>