繁体   English   中英

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

[英]ASP.NET 3.5, googlebot, 301 Redirect “Cannot redirect after HTTP headers have been sent”

我在自定义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;

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

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

在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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM