[英]IIS overriding custom 404 error page in ASP.NET
我正在尝试创建一个404错误页面,目前我已经拥有以下所有内容/尝试了以下所有内容来尝试完成此操作。 当用户输入时:
它的工作方式与其应有的一样。 但是如果用户键入:
没有.aspx然后IIS7自己掌握了问题,我得到了IIS7附带的可爱错误页面。 目标是网站仅重定向404状态代码(因此不是200或302重定向)。 我在web配置中尝试过:
<customErrors mode="On" defaultRedirect="~/error/Default.aspx redirectMode="ResponseRewrite">
<error statusCode="404" redirect="~/error/NotFound.aspx" />
</customErrors>
这适用于具有.aspx文件扩展名的URL,但不适用于没有扩展名的URL。 与global.asax中的这种方法相同
void Application_Error(object sender, EventArgs e)
{
var serverError = Server.GetLastError() as HttpException;
if (serverError != null)
{
if (serverError.GetHttpCode() == 404)
{
Server.ClearError();
Server.Transfer("~/error/NotFound.aspx");
}
Server.Transfer("~/error/Default.aspx");
}
}
对此有相同的结果:(我最后的尝试是将此应用于Web配置:
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
有了这个我只是得到一个没有任何东西的纯白色屏幕...任何想法或评论将不胜感激! 提前致谢!
以下代码适用于.aspx和其他文件类型:
Global.asax中
void Application_Error(object sender, EventArgs e)
{
var serverError = Server.GetLastError() as HttpException;
if (serverError != null)
{
if (serverError.GetHttpCode() == 404)
{
Server.ClearError();
Response.Redirect("~/NotFound.aspx?URL=" + Request.Url.ToString());
}
Response.Redirect("~/Default.aspx");
}
}
Web.config文件
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
您的应用程序似乎在经典管道模式下运行。 将其更改为集成,您的问题将得到解决。 这是一篇关于管道模式及其差异的文章 - http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-7-integrated-pipeline/
<system.webServer >
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" path="http://www.seair.co.in/Page-not-found.aspx" responseMode="Redirect" />
</httpErrors>
</system.webServer>
使用配置中的代码并提供错误页面的完整路径
对于经典的asp,你可以使用它
<system.webServer>
<httpErrors>
<clear />
<error statusCode="404" subStatusCode="-1" path="/404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.