ASP.NET 3.5,googlebot,301重定向“在发送HTTP标头后无法重定向”

时间:2011-03-23 18:57:28

标签: c# asp.net

我在自定义HttpModule中设置了动态301重定向例程。代码接受传入的URL,解析查询字符串,并使用配置和应用程序特定的逻辑,使用以下代码重定向到新的SEO友好URL:

if (HttpContext.Current.Response.IsRequestBeingRedirected)
    return;

if (!HttpContext.Current.Response.IsClientConnected)
{
    response.End();
    return;
}

response.Redirect(newLocation, false);
response.Status = "301 Moved Permanently";
response.StatusCode = 301;

如果您直接在网络浏览器中输入旧网址,这样可以正常使用。但是,当googlebot(66.249.71.11)访问相同的URL时,我的事件日志显示了一堆“在发送HTTP标头后无法重定向”HttpExceptions。

我对这个问题是什么以及如何解决它感到茫然。

1 个答案:

答案 0 :(得分:2)

在ASP.NET 3.5中,Response.Redirect自动发送302(而不是301)并终止与客户端的连接。如果要使用301,则必须手动插入所有标题。如下所示:

Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","/about.aspx");
Response.End();

或者,您可以升级到ASP.NET 4.0,现在有一种方法可以指示某些内容已永久移动。

Response.RedirectPermanent("/about.aspx");