【问题标题】:UpdatePanel async postback causes infinite HTTP POST loop and PageRequestManagerParserErrorExceptionUpdatePanel 异步回发导致无限 HTTP POST 循环和 PageRequestManagerParserErrorException
【发布时间】:2015-12-12 20:48:16
【问题描述】:

问题:

  • 在 Sharepoint 2010 ASP.NET 页面中有一个 UpdatePanel 异步回发,它在 HTTP GET 页面加载后执行无限 HTTP POST 循环。
    • 所有 HTTP GET(初始页面加载)和 HTTP POST(更新面板回发)操作都在接收 HTTP/1.1 200 OK。
  • 在收到 HTTP POST 的 HTTP/1.1 200 OK 响应后,可以在 Web 浏览器控制台中看到的错误消息:

错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器接收到的消息。此错误的常见原因是通过调用 Response.Write()、响应过滤器、HttpModules 或启用了服务器跟踪来修改响应。

详细信息:在“”附近解析出错。

更新面板 HTTP 响应分隔符数据格式:

在 HTTP POST 的响应中,我注意到管道 ("|") 分隔格式的 (|||) HTML 内容的内容长度小于 HTML 内容文本的实际长度. HTML 内容包含 UTF-8 数据,因此字符长度和字节长度是不同的。然而,考虑到这一点似乎也不能使长度匹配。

网上找了一些关于更新面板HTTP响应格式的资料,但是我好像找不到详细的格式规范和详细的解析器行为信息:

特定于响应的管道分隔符格式的问题:

  • 格式的是指字节长度、字符长度还是别的什么?
  • 不匹配的情况下是否指定了解析器行为?解析器能否幸存下来?
  • 我尝试了广泛的搜索,但没有找到关于 UpdatePanel 响应的管道分隔格式。有没有 详细的格式和解析器规范?

一般问题:

之前的问题基于内容长度不匹配可能导致 PageRequestManagerParserErrorException 和无限 HTTP POST 循环的假设。

还有其他可能导致此无限循环问题的可能性吗?

【问题讨论】:

    标签: asp.net sharepoint sharepoint-2010


    【解决方案1】:

    问题已解决。我将在这里回答提出的一些问题。

    还有其他可能导致此无限循环问题的可能性吗?

    在这种情况下,循环是由解析器错误引起的。根本原因是 HTTP 数据路由软件在两者之间发生了变化。新软件在到达最终用户的网络浏览器之前修改了 UpdatePanel HTTP 响应数据,导致数据格式错误和解析器错误。

    格式的含义是字节长度、字符长度还是其他?

    是字符长度。

    我尝试了广泛的搜索,但没有找到有关 UpdatePanel 响应的管道分隔格式的规范。有详细的格式和解析器规范吗?

    是否指定了解析器行为以防万一不匹配?解析器能幸存下来吗?

    找不到规范,但如果内容长度不同,解析器似乎无法生存。

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 2018-05-06
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      • 2018-10-15
      相关资源
      最近更新 更多