Bud*_*dda 16 asp.net http-status-code-404
如果我的网站发生错误,我会执行以下操作:
Server.Transfer("/error.aspx");
Run Code Online (Sandbox Code Playgroud)
那个页面有代码:
protected void Page_Load(object sender, EventArgs e)
{
...
Response.StatusCode = 404;
}
Run Code Online (Sandbox Code Playgroud)
如果我在localhost上工作,那么返回页面的404状态,页面显示"正确的错误描述".
一旦我向互联网发布了相同的代码,所有有错误的页面仍然会显示404状态代码,但是没有内容.相反,他们有标准的404错误消息:
404 - 找不到文件或目录.
如果"Response.StatusCode = 404"行被注释掉,那么提供了正确的页面,但它有200个状态代码.
问题:如何返回用户友好的错误页面,同时有404错误状态码?
欢迎任何想法!非常感谢提前!
PS ASP.NET 4.0
adt*_*adt 15
<customErrors mode="On" defaultRedirect="~/Error/GenericErrorPage.aspx">
<error statusCode="404" redirect="~/Error/404.aspx" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/h0hfz6fc(v=vs.71).aspx
http://msdn.microsoft.com/en-us/library/aa479319.aspx
Jag*_*Jag 11
哈!
试试这个:
Response.TrySkipIisCustomErrors = true;
Response.Status = "404 Not Found";
Response.StatusCode = 404;
Run Code Online (Sandbox Code Playgroud)
我Response.TrySkipIisCustomErrors=true在设置状态代码之前添加的时候发现,我会看到正常的页面复制并返回404.如果没有此行,将显示标准IIS 404页面.
或者,这可以在web.config中设置,如下所示:
<system.webServer>
<httpErrors existingResponse="PassThrough">
// custom error page mappings
</httpErrors>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
这里的关键是 existingResponse="PassThrough"
这已添加到IIS7,因此在以集成管道模式运行的站点上是必需的.
有关详细信息:http://msdn.microsoft.com/en-us/library/system.web.httpresponse.tryskipiiscustomerrors.aspx
更新 更新以获取澄清/更多信息,因为人们仍然觉得这很有用.值得注意的是,如果您需要一个简单的通用404页面,请使用web.config方法(最好使其成为纯HTML页面).
我描述的方法效果最好,如果你有一个动态或CMS驱动的网站,任何给定的页面可能会返回404,但你想显示你的访问者相关信息.
例如,特殊优惠页面(优惠/部分优惠)可以查找优惠(部分优惠),如果不存在则显示替代或相关优惠,同时在引擎盖下返回404.据访问者了解,他们刚刚被告知要约已不再可用,但他们仍然在优惠部分,但我们也告诉机器人取消索引网址.如果只有一个通用的404页面,那将会更加困难.
小智 5
要使用正确的 404 状态代码显示您自己的页面,您可以使用以下代码:
1)在您的 web.config 中添加以下内容:
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="404.htm" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)
和:
<httpErrors errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="404.htm" responseMode="File"/>
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
2) 将 404.htm 文件添加到网站的根目录:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>404 - Not Found</title>
<meta http-equiv="refresh" content="5;url=/404-PAGE" />
</head>
<body>
CONTENT
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
您可以将内容添加到此文件的正文并删除 META 刷新,或者仅使用 META 刷新在 CMS 中打开页面。
| 归档时间: |
|
| 查看次数: |
29869 次 |
| 最近记录: |