在最近的一个项目中,我们目前收到12031错误。这是完整的错误:
Sys.WebForms.PageRequestManagerServerErrorException 12031 从中返回的状态代码 服务器是12031
问题是,这不会一直发生,我们无法在开发环境中重现错误。
我们在我们的应用程序中使用AJAX,偶尔会在每个页面上发生此异常。
我在SO上发现了一个有相同问题的帖子,并尝试将maxRequestLength
更改为“1”以查看我是否经常遇到相同的错误,但我没有。相反,我正在
Maximum request length exceeded.
所以我开始认为它与maxRequestLength
无关。我实际上是出于想法。我的ScriptManager
和MasterPage
中有一个AsyncPostBackTimeout="240"
。这是相同的时间(给予或采取)。 3,5分钟“无”之后我得到12031错误。我正在记录其中一个页面并通过记录,我的意思是记录页面的每个部分,如“调用Page_Load”,“调用xyz”等,我在页面上有15个点。用户单击按钮并且ScriptManager
尝试执行其工作后,不会发生回发,也不会发生日志记录。这就像页面想要回发但是太旧而无法做到。尝试约3.5分钟并因给定错误而失败。
如果您有任何想法,请帮助我。
谢谢
答案 0 :(得分:2)
该错误几乎肯定与响应的大小,AsyncPostBackTimeout或maxRequestLength无关。
连接重置通常表示网络连接不良或服务器已加载到其容量限制。你可以尝试一些事情:
答案 1 :(得分:0)
此错误可能是由于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()并传入相关按钮。这是动态添加的控件的最佳解决方案,例如重复模板中的控件。
祝你好运!答案 2 :(得分:0)
我们在a Barracuda Device坐在我们网站前面时收到此错误。这是一个最大请求长度问题,因为Barracuda可以防止请求大小过载。我们暂时删除了设备并解决了问题。不确定这是不是你的问题。