Response.AppendHeader()坏了

时间:2011-09-23 17:52:45

标签: .net asp.net vb.net .net-2.0

我正在使用

Response.AppendHeader("Refresh", "2; url=default.aspx")

要在用户登录或注销后将其发送回主页并且有效。但是,在联系我们页面上它失败了,这就是它所说的:

  

无法找到资源。描述:HTTP 404.资源你   正在寻找(或其中一个依赖)可能已被删除,   更改名称,或暂时不可用。请查阅   以下网址,并确保拼写正确。

     

请求的网址:/default.aspx,2; URL = Default.aspx的

奇怪的是,这不会在调试中发生,只会在实际网站上发生。它看起来像是两次以某种方式附加标题......我不知道。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

如果“联系”页面与Default.aspx不在同一路径中,则相对路径将不起作用。你需要给它一个绝对的路径,如“../Default.aspx”,如果它的一级下来。

答案 1 :(得分:0)

我发现它是什么。在我的aspx中我有

onclick="btnSubmit_Click" runat="server"

您只需要runat =“server”指令。 onclick指令导致事件处理程序触发两次。

答案 2 :(得分:0)

一种解决方案是替换:

Response.AppendHeader("Refresh", "2; url=default.aspx");

具有:

Response.Headers["Refresh"] = "2; url=default.aspx";

HTTP 404错误的原因是由于HTTP响应标头中的“ Refresh”标头重复。它不会影响IE,但会影响Chrome。

这是一个棘手的问题,只有当您在浏览器的开发人员模式下看到HTTP响应标头时,您才能理解这一点。

在ASP.NET中,如果您使用的是Server.Transfer,则即使传输完成,地址栏中的页面名称也不会更改。例如如果您是从Default.aspx转移到Managers.aspx,则地址栏上仍显示Default.aspx。并且,当Response.AppendHeaderDefault.aspxManagers.aspx的页面上时,则在传输时,标头会两次添加到Default.aspx