.net Response.AppendHeader()已损坏

.net Response.AppendHeader()已损坏,.net,asp.net,vb.net,.net-2.0,.net,Asp.net,Vb.net,.net 2.0,我正在使用 Response.AppendHeader("Refresh", "2; url=default.aspx") 在用户登录或注销后将其发送回主页,并且该操作正常。但是,在“联系我们”页面上,它失败了,上面说: 找不到资源。描述:HTTP404。你需要的资源 正在查找的(或其依赖项之一)可能已被删除, 其名称已更改,或暂时不可用。请复习 请输入以下URL并确保其拼写正确 请求的URL:/default.aspx,2;url=default.aspx 奇怪的是,这种情况不会发生在调试中

我正在使用

Response.AppendHeader("Refresh", "2; url=default.aspx")
在用户登录或注销后将其发送回主页,并且该操作正常。但是,在“联系我们”页面上,它失败了,上面说:

找不到资源。描述:HTTP404。你需要的资源 正在查找的(或其依赖项之一)可能已被删除, 其名称已更改,或暂时不可用。请复习 请输入以下URL并确保其拼写正确

请求的URL:/default.aspx,2;url=default.aspx


奇怪的是,这种情况不会发生在调试中,只会发生在实时站点上。看起来它不知怎的在头上附加了两次。。。我不知道。有什么想法吗?

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

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

onclick="btnSubmit_Click" runat="server"

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

一行解决方案是替换:

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

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

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


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

contactus是否在另一个类似/contact/contactus.aspx的文件夹中?如果是,请在live站点上尝试放置
url=../default.aspx
(相对路径)并查看是否有差异。否,default.aspx和联系人表单位于同一文件夹中。它在调试中工作…您是否使用了FireBug之类的工具来检查标题并确保标题正确传输?好的,奇怪的是在注销页面上,它在标题中显示重定向,但标题在提交后没有出现在联系人页面上,但它仍然重定向到错误页面。。。
Response.Headers["Refresh"] = "2; url=default.aspx";