Sys.WebForms.PageRequestManagerServerErrorException 12031 系统中的Web表单发生错误,导致服务器返回了状态码12031。

19

我偶尔会从一个 AJAX.NET 应用程序中收到以下弹出窗口:

Sys.WebForms.PageRequestManagerServerErrorException: 在服务器处理请求时发生未知错误。服务器返回的状态代码为:12031

根据 Microsoft kb 的说法,该状态代码表示 ERROR_INTERNET_CONNECTION_RESET,但它没有说明首先触发错误的潜在问题是什么。

我如何记录/跟踪等生成弹出窗口的潜在错误?

6个回答

21
如果您从updatePanel获取到这个错误,请在页面的ScriptManager中将EnablePartialRendering设置为false,然后它应该会给出实际的错误。
另外,如果它只是偶尔发生,我发现它可能是一个视图状态问题,特别是当页面在刷新之间经过很长时间(大约20分钟)时。
否则,请尝试一些try / catch块。那些是一些简单的方法。
希望这能帮助!

1
将 "set EnablePartialRendering to false" 设为 false 帮助我找到了错误,谢谢! - Homer
如果您正在使用Chrome浏览器,请打开开发者工具并查看控制台。错误信息也会在那里显示,而无需更改您的代码。 - Induster
@Induster 很好的观点!如果您查看任何红色请求(http错误代码)的“网络”选项卡,点击该请求,然后点击“预览”选项卡,您也可以看到错误页面。 - Zachary Yates
非常感谢。这个属性帮助我识别了真正的错误。Chrome工具指向整个通过视图状态传递的对象中的通用序列化错误。将此属性设置为false告诉我,错误在于一个缺少Serializable属性的对象成员中。 - Carlos Nuñez

15

这是一个与视图状态有关的问题,但不是与时间有关,而是与大小有关。请尝试在您的web.config中更改maxRequestLength参数。


感谢您指引我正确的方向。最终,我通过将ViewState写入数据库而不是将其发送到浏览器中的页面来解决了问题。 - bastos.sergio

2
在 web.config 文件中加入 <httpRuntime requestValidationMode="2.0"/>,并在 YourPage.aspx 中设置 (ClientIDMode="Static" ValidateRequest="false")。请注意,不要删除原有的 HTML 标签。
示例:web.config
   <?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <httpRuntime requestValidationMode="2.0"/>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      </assemblies>
    </compilation>

  </system.web>


  <connectionStrings>
    <add name="WT_ZadnjiEntities" connectionString="metadata=res://*/DAL.Model.csdl|res://*/DAL.Model.ssdl|res://*/DAL.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SATELLITE-PC;initial catalog=WT_Zadnji;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>

1

在下拉菜单选择更改之间存在大延迟(>20分钟)后,我在UpdatePanel中使用autopostback Dropdown时遇到了此错误。

尝试在web.config中增加会话超时时间。例如:

<sessionState mode="InProc" cookieless="true" timeout="720"/>;

0

在postback时,我遇到了以下错误:

错误:Sys.WebForms.PageRequestManagerServerErrorException:处理服务器请求时发生未知错误。

但对我来说,问题是我正在将项目从ASP.NET 2.0转换为ASP.NET 4.0,并且在页面上使用了<asp:UpdatePanel runat="server">

我暂时去掉了<asp:UpdatePanel runat="server">,然后运行页面以获取确切的错误。它是“检测到潜在危险的Request.Form值”

我发现即使在页面上有ValidateRequest="false",ASP.NET 4.0也要求您在web.config的HttpRuntime标记中添加requestValidationMode="2.0"

<httpRuntime maxRequestLength="102400" requestValidationMode="2.0"/>

参考资料


0
有时候,如果您添加了服务器SSL证书(https),可能会出现错误。如果证书无效,将会出现此错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接