Response.Redirect中的标头已损坏

时间:2010-11-25 15:01:13

标签: c# asp.net redirect http-headers

我在网站上有一位用户收到此错误:

Object reference not set to an instance of an object.HTTP/1.1 302 Found  
Cache-Control: private  
Content-Type: text/html; charset=utf-8  
Location: /search.aspx?ds=1&s=s%c3%b8ren s%c3%b8rensen  
Server: Microsoft-IIS/7.5  
X-AspNet-Version: 2.0.50727  
X-Powered-By: ASP.NET  
Date: Thu, 25 Nov 2010 10:26:54 GMT  
Content-Length: 177

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="%2fsearch.aspx%3fds%3d1%26s%3ds%25c3%25b8ren+s%25c3%25b8rensen">here</a>.</h2>
</body></html>

有问题的重定向在此处执行:

protected void btnSearch_Click(object sender, EventArgs e) {
    string strSearch = ss.StringStuff.FixNullString(txtSearch.Text);
    if (strSearch != "") {          
        Document dcFrontpage = new Document(1170);
        int intSearchPageId = ss.NumberStuff.FixNull(dcFrontpage.getProperty("searchPageContentPicker").Value.ToString());
        string strSearchPageUrl = umbraco.library.NiceUrl(intSearchPageId);
        Response.Clear();
        Response.Redirect(strSearchPageUrl + "?ds=1&s=" + strSearch);
    }
}

有时会询问用户是否要保存文件,即使它是.aspx文件,其余时间浏览器只显示上面的内容。
我认为两个错误都发生是因为文本“对象引用未设置为对象的实例”。插入到标题中。当然,这不属于此并且使页面非常无效,因此浏览器的行为如上所述 我无法重现错误,我的同事也无法重现。

以前有人见过这样的事吗? 如何将文本插入标题中,为什么它只适用于单个(或极少数)用户?

提前致谢

修改 我已经考虑过代码中某个地方有一个try-catch的可能性应该写出某个地方出现的错误,但是为什么这个错误应该放在标题的开头,为什么它只会出现在很少用户?
此外,我刚刚检查了解决方案中的每个try-catch。他们都没有通过Response.Write打印出错误消息。

2 个答案:

答案 0 :(得分:0)

我怀疑可能会有一些类似于潜伏某处的代码。取出try-catch。你不想要它,最终也不会想要它的人。

try
{
    // Do something
}
catch (Exception ex)
{
    Respose.Write(ex.Message);
}

答案 1 :(得分:0)

现在找到错误。
用户似乎有一些严格的防病毒设置导致此错误 禁用这些设置时,她无法再重现该错误。