Response.Redirect的奇怪错误

时间:2009-03-31 17:44:23

标签: c# asp.net

尝试在我的一个ASP.NET页面中使用Response.Redirect时出现以下错误:

[ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: offset]
   System.Web.HttpResponseStream.Write(Byte[] buffer, Int32 offset, Int32 count) +8858392
   System.Web.HttpResponseStreamFilterSink.Write(Byte[] buffer, Int32 offset, Int32 count) +30      
   System.Web.HttpWriter.Filter(Boolean finalFiltering) +8754611
   System.Web.HttpResponse.FilterOutput() +82
   System.Web.ApplicationStepManager.ResumeSteps(Exception error) +501
   System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +123
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +379

我以前从未见过这个。如果我在Page Load事件期间响应.Redirect,那就会发生。

任何想法?

编辑:这不是我的代码,如果我只是在Page_Load中单独粘贴Response.Redirect,就会发生这种情况。

编辑#2:使用302 FOUND标头工作正常,但是不是响应.redirect应该做什么呢?

2 个答案:

答案 0 :(得分:1)

这可能没有多大帮助,但是当偏移<时,异常本身被抛入HttpResponseStream.Write(byte [] buffer,int offset,int count)中。 0(不是)或缓冲区长度为零。根据我的理解,如果启用缓冲输出并且设法将零字节写入流中,则可能发生这种情况。

我会尝试在重定向之前调用Flush并尝试使用第二个参数。我还会检查web.config以查找任何自定义过滤器(不太可能)。还要确保目标应用程序没有异步页面处理,这可能会造成严重破坏。

显然其他人一直有类似的错误,但通常在编写自己的过滤器时。我最终会在汇编程序级别进行调试......

答案 1 :(得分:0)

我会仔细检查目标页面的代码(因为你评论错误发生在那里)。它可能正在使用取决于请求的东西。我从未见过类似的错误,但看起来你应该专注于页面正在做的任何特殊事情。