UpdatePanel 异步回发导致无限 HTTP POST 循环和 PageRequestManagerParserErrorException

UpdatePanel async postback causes infinite HTTP POST loop and PageRequestManagerParserErrorException

问题:

Error: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.

Details: Error parsing near '<partial text string from __VIEWSTATE variable's value>'.

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

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

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

特定于响应的竖线分隔符格式的问题:

一般问题:

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

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

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

Are there some other possibilities that could cause this infinite loop issue?

在这种情况下,循环是由解析器错误引起的。根本原因是中间更改了 HTTP 数据路由软件。新软件在到达最终用户的 Web 浏览器之前修改了 UpdatePanel HTTP 响应数据,这导致数据畸形和解析器错误。

Is format's meaning byte length, character length or something else?

是字符长度。

I've tried extensive searching but haven't find specifications about UpdatePanel response's pipe delimited format. Are there any detailed format and parser specifications?

Has the parser behavior been specified in case does not match with ? Can the parser survive it?

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