【问题标题】:UpdatePanel Postback Error: Sys.WebForms.PageRequestManagerParserErrorExceptionUpdatePanel 回发错误:Sys.WebForms.PageRequestManagerParserErrorException
【发布时间】:2012-01-31 19:23:55
【问题描述】:

已经看过这个: Sys.WebForms.PageRequestManagerParserErrorException - what it is and how to avoid it

问题是它只发生在我的开发盒上。另外两个开发者很好。

这是一致且可重现的 - 我尝试删除临时 Internet 文件,删除我的 obj 和 bin 文件并重新启动。

当我在调试器中查看它遇到错误时,响应显然被截断了。

我还需要检查哪些地方才能清理/清理?

我在代码中看到的错误是:

Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerParserErrorException:消息 从服务器收到的无法解析。造成这种情况的常见原因 错误是通过调用 Response.Write() 修改响应时, 响应过滤器、HttpModules 或服务器跟踪已启用。细节: '</tr> 附近的解析错误 '。

_endPostBack: function PageRequestManager$_endPostBack(error, executor, data) {
    if (this._request === executor.get_webRequest()) {
        this._processingRequest = false;
        this._additionalInput = null;
        this._request = null;
    }

    var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
    Sys.Observer.raiseEvent(this, "endRequest", eventArgs);
    if (error && !eventArgs.get_errorHandled()) {
        throw error; // THIS IS WHERE THE ERROR IS THROWN
    }
},

这是在 Ajax 回发期间。

  1. 没有 Response.Write 调用。

  2. 我使用的是 Cassini/VS 2010 Development Server,如何判断是否有过滤器?

  3. 同上

  4. 未启用服务器跟踪

  5. 没有调用 Server.Transfer

在 firebug 中,我可以看到对 POST 的响应被截断。问题发生在 Firefox 或 IE 中,以及我是否在 VS 中调试。

如果我在 Visual Studio 中切换到 IIS Express,问题确实会消失,然后当我回到 ASP.NET 开发服务器上时它会再次出现。

【问题讨论】:

  • @Ravi 不,这是可重现且一致的,这些建议都没有帮助。
  • 你清理过asp.net创建的临时文件吗?在 windows\microsoft.net\framework\version\temporary asp.net(要清除这个,iis 必须关闭)
  • @Aristos 谢谢,但这并没有帮助 - 在同一个地方出现同样的错误(更新面板中一些单选按钮的回发具有完全相同的损坏响应)
  • 您能否定位一个问题并分享一个能够重现此问题的示例应用程序? OffTop - UpdatePanels - 邪恶,使用真正的 AJAX

标签: c# asp.net .net ajax visual-studio-2010


【解决方案1】:

我以前在 Cassini 上看到过这个问题。我通过将以下内容添加到 Web.config 来解决它:

<system.web>
  <httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </httpModules>
</system.web>

以上条目适用于 1.0 版。确保 Version 和 PublickKeyToken 属性与您使用的 ASP.net Ajax 版本匹配。此外,您可能希望在页面中禁用事件验证:

enableEventValidation="false"

希望对你有帮助!

【讨论】:

    【解决方案2】:

    在我们的谈话之后,我的想法是,也许由于某种原因,卡西尼不能保持大的后场,而大的就是视图状态。

    因此,如果视图状态非常大,也许这就是问题所在。

    第二种情况可能是视图状态包含某些时间不通过路由器或某些防火墙的字符,并将它们作为可能的附加或病毒切断。

    可能的解决方案:压缩视图状态,和/或将其切割成更小的部分。

    您还可以在 http://cassinidev.codeplex.com/ 下载最新的开发者版 Cassini,其中有很多改进可能已经解决了这个问题。

    【讨论】:

    • 此特定页面上的视图状态大小为 8300 字节,但它已停止给出错误,所以我不确定它到底对什么敏感。过去,它在一些 Windwos 更新后就消失了,所以我认为这也是某种框架敏感性。我期待尽快在这个旧版应用中摆脱视图状态。
    • @CadeRoux 8k 很重要。我已将我的视图状态拆分为 1k 以下的部分。我想告诉你,也有可能不是这个错误,而是数据绑定的同步错误。
    【解决方案3】:

    您是否在使用某种 http 模块压缩?使用更新面板时,它似乎会引起与您的问题非常相似的问题。请查看this post。

    如果你不使用压缩,也许another httpmodule related 错误会让你受苦。尝试将此添加到您的网页:

    enableEventValidation="false"
    

    也许你可以用这种代码捕获异常:

     protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
        {
            ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message+e.Exception.StackTrace ;
        }
    
    <asp:ScriptManager ID="ScriptManager1" runat="server" 
                OnAsyncPostBackError="ScriptManager1_AsyncPostBackError">
    </asp:ScriptManager> 
    

    Source 最后一件事。

    【讨论】:

      【解决方案4】:

      错误:

      Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 500
      

      解决方案:

      <add key="aspnet:MaxHttpCollectionKeys" value="100000"/ >
      

      在应用设置部分添加上面的键。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        • 1970-01-01
        • 2010-10-23
        • 1970-01-01
        • 2011-11-03
        • 1970-01-01
        相关资源
        最近更新 更多