【问题标题】:Bizarre error with Response.RedirectResponse.Redirect 的奇怪错误
【发布时间】:2009-03-31 17:44:22
【问题描述】:

尝试在我的一个 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

我以前从未见过这种情况。如果我在页面加载事件期间进行 Response.Redirect,就会发生这种情况。

有什么想法吗?

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

编辑#2:使用 302 FOUND 标头可以正常工作,但这不就是 response.redirect 应该做的吗?

【问题讨论】:

  • 把你的一些代码放上来,让我们看看!
  • 这个错误发生在源页面还是目标页面?

标签: c# asp.net


【解决方案1】:

这可能不会有太大帮助,但是当偏移量

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 目标页面是什么并不重要。我可以指向网站上的任何页面......它似乎来自框架本身,查看堆栈跟踪。
    猜你喜欢
    • 2010-11-17
    • 1970-01-01
    • 2014-10-11
    • 2012-04-27
    • 2013-10-30
    • 2016-09-18
    • 2012-03-18
    • 2015-05-13
    • 2016-07-14
    相关资源
    最近更新 更多