Google 404 和 .NET 自定义错误页面
Posted
技术标签:
【中文标题】Google 404 和 .NET 自定义错误页面【英文标题】:Google 404 and .NET Custom Error Pages 【发布时间】:2010-09-14 05:12:54 【问题描述】:我有一个带有自定义 404 页面的 ASP.NET 2.0 网站。当未找到内容时,该站点将提供带有 aspxerrorpath=/mauro.aspx 的查询字符串添加的自定义 404 页面。 404 页面本身的 HTTP 状态为 200。为了尝试解决此问题,我添加了
protected void Page_Load(object sender, EventArgs e)
Response.StatusCode = 404;
我添加了 Google 小部件,但有两个问题。在Internet Explorer 7 中,它不显示它应该显示的位置。如果我将它添加到内容中,我会在 char 79 第 226 行或其附近收到“未知错误”;如果我将它添加到标题部分,搜索框会出现在内容上方。在 Firefox 中它工作正常。
所以我的问题是:
-
如何使小部件出现
内联?
如何制作错误页面
使用原始文件渲染为 404
文件的名称和路径
要求,以便当我要求
mauro.aspx 我得到的内容
404 页面,但 URL 为
毛罗.aspx? (我假设我会
必须做一些URL rewriting 在
begin_request global.asax 文件,但是
希望在我之前确认这一点
做傻事。)
【问题讨论】:
【参考方案1】:您现在可以使用 ASP.NET 3.5 SP1 中的新重定向模式,因此它不会重定向。它显示错误页面,但保持 URL 相同:
“也适用于 URL 重定向。如果您在 web.config 中将 redirectMode 设置为“responseRewrite”,则可以避免重定向到自定义错误页面,并且保持浏览器中的 URL 不变。”
CustomErrorsSection.RedirectMode Property (MSDN)【讨论】:
谢谢,但我们在本例中使用的是 .Net 2.0,但我会牢记 .net 3.5 sp1 信息。 射击我真的很抱歉,当我读完它时,我一定忘记了你帖子的 2.0 部分。我的错。 没问题,我可以用它作为将来使用 3.5 的参数:) 赞成,因为这仍然很有帮助,很高兴明确 2.0 在这方面被破坏了【参考方案2】:我已经在 global.asax 文件中处理了 404
protected void Application_BeginRequest(object sender, EventArgs e)
string url = Request.RawUrl;
if ((url.Contains(".aspx")) && (!System.IO.File.Exists(Server.MapPath(url))))
Server.Transfer("/Error/FileNotFound.aspx");
现在,如果有人可以帮助我使用 google 小部件,那就太好了!
【讨论】:
这对性能至关重要,您在每次请求时都检查文件是否存在。 正确,我可以将结果存储在字典或类似的字典中,以便更快地检查...以上是关于Google 404 和 .NET 自定义错误页面的主要内容,如果未能解决你的问题,请参考以下文章