【问题标题】:Sys.WebForms.PageRequestManagerServerErrorException 12031. Out of ideasSys.WebForms.PageRequestManagerServerErrorException 12031。没有想法
【发布时间】:2011-07-05 18:48:18
【问题描述】:

在最近的一个项目中,我们目前遇到 12031 错误。这是完整的错误:

Sys.WebForms.PageRequestManagerServerErrorException 12031 从返回的状态码 服务器是 12031

问题是,这种情况并非一直发生,我们无法在开发环境中重现该错误。

我们在我们的应用程序中使用 AJAX,这个异常偶尔会在每个页面上发生。

我在 SO 上找到了一个有同样问题的帖子,并尝试将 maxRequestLength 更改为“1”以查看我是否经常收到相同的错误,但我没有。相反,我得到了

Maximum request length exceeded. 

所以我开始认为它与maxRequestLength 无关。我实际上没有想法。我的MasterPage 和它的AsyncPostBackTimeout="240" 中有一个ScriptManager。那是相同的时间(给予或接受)。在 3.5 分钟“无”后,我得到 12031 错误。我正在记录其中一个页面,通过记录,我的意思是记录页面的每个部分,例如“Page_Load 被调用”“xyz 被调用”等,我在页面上有 15 个位置。在用户单击按钮并且ScriptManager 尝试完成其工作后,不会发生回发,也不会发生日志记录。这就像页面想要回发但太旧而不能这样做。尝试此操作大约 3.5 分钟,但因给定错误而失败。

如果您有任何想法,请帮帮我。

谢谢

【问题讨论】:

  • 错误12031ERROR_INTERNET_CONNECTION_RESET。看起来像是服务器或网络的问题。如果您在服务器本身上打开一个会话并从那里尝试,您能否重现该问题?
  • 是的,我知道它是 ERROR_INTERNET_CONNECTION_RESET 但我无法重现它。这些设备实际上是信息亭,并且正在调用一个 Web 应用程序。我正在我的 PC 上开发它,我这边没有问题,它只发生在 prod 中。
  • 您的信息亭浏览器版本是多少?
  • ie 6 和 ie8。都给出了错误。

标签: asp.net ajax exception


【解决方案1】:

此错误可能是由于 maxRequestLength 的 HTTP 运行时限制。默认值为 4096。

 Try adding (or editing) the following entry in your Web.Config: 
"<httpRuntime maxRequestLength="8192"  />" (effectively allowing 8mb of data transmission, instead of the default 4mb). 

请不要....您可以根据您的最大要求设置数据。 8192 不是极限。您还需要添加 Page.Form.Attributes.Add("enctype", "multipart/form-data");在页面的 Page_Load 事件中。

您需要在 System.Web 配置部分中输入此内容。

如何避免出现 PageRequestManagerParserErrorException?

首先,不要执行上述列表中的任何操作!以下是如何避免给定错误的匹配列表(如果可能): 调用 Response.Write(): 在页面上放置一个或类似的控件并设置其 Text 属性。额外的好处是您的页面将是有效的 HTML。使用 Response.Write() 时,您通常会看到包含无效标记的页面。

响应过滤器: 修复可能只是不使用过滤器。无论如何,它们并不经常使用。如果可能,请在控制级别而不是响应级别进行过滤。

HttpModules:与响应过滤器相同。

服务器跟踪已启用: 使用其他形式的跟踪,例如写入日志文件、Windows 事件日志或自定义机制。 调用 Server.Transfer(): 我不太确定人们为什么要使用 Server.Transfer() 。也许这是 Classic ASP 遗留下来的东西。我建议将 Response.Redirect() 与查询字符串参数或跨页发布一起使用。

避免解析错误的另一种方法是执行常规回发而不是异步回发。例如,如果您有一个绝对必须执行 Server.Transfer() 的按钮,请使其执行定期回发。有多种方法可以做到这一点: 最简单的方法是简单地将按钮放在任何 UpdatePanel 之外。不幸的是,您的页面布局可能不允许这样做。 将 PostBackTrigger 添加到指向按钮的 UpdatePanel。如果按钮是通过页面上的标记静态声明的,这将非常有用。 调用 ScriptManager.RegisterPostBackControl() 并传入相关按钮。这是动态添加控件的最佳解决方案,例如重复模板中的控件。

祝你好运!

【讨论】:

  • 我尝试将其设置为“1”,但没有收到相同的错误,所以我认为这与我的错误无关。
  • 将 validateRequest="false" 添加到 aspx 页面标记顶部的 Page 指令中,并在 webconfig 中设置 httpRuntime 元素。
  • 添加 Page.Form.Attributes.Add("enctype", "multipart/form-data");在页面的 Page_Load 事件中。
【解决方案2】:

该错误几乎肯定与响应的大小、AsyncPostBackTimeout 或 maxRequestLength 无关。

连接重置通常表示网络连接不佳或服务器负载已达到其容量限制。您可以尝试几件事:

  1. 在已知信息亭收到错误期间检查 Windows 事件日志。查找任何相关的错误或警告。
  2. 如果可行,请信息亭工作人员在收到您的应用错误时使用Pingtest 之类的方式测试其本地网络连接的质量。
  3. 使用Pingdom 之类的服务来确保服务器本身不会间歇性地失去连接。

【讨论】:

  • 谢谢,我们已经尝试过 ping、事件日志,但似乎没有任何可疑之处 :( 我们真的需要这个问题的原因..
【解决方案3】:

当我们有 a Barracuda Device 坐在我们的网站前时,我收到了这个错误。这是一个最大请求长度问题,因为梭子鱼可以防止请求大小过载。我们暂时移除了设备,它解决了问题。不确定这是否是您的问题。

【讨论】:

    猜你喜欢
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    相关资源
    最近更新 更多