AJAX.NETアプリケーションから次のポップアップが時々表示されます
Sys.WebForms.PageRequestManagerServerErrorException:サーバーで要求を処理中に不明なエラーが発生しました。サーバーから返されたステータスコードは次のとおりです:12031
Microsoft kb から、ステータスコードはERROR_INTERNET_CONNECTION_RESETを示していますが、最初にエラーを引き起こした根本的な問題が何であるかは示されていません。
ポップアップを生成した根本的なエラーをどのようにログ/トレース/その他できますか?
これはビューステートの問題ですが、時間ではなくサイズに関連しています。 web.configでmaxRequestLengthを試してみてください。
UpdatePanelからそれを取得している場合は、ページのScriptManagerでEnablePartialRenderingをfalseに設定すると、実際のエラーが表示されます。
また、それがたまにしか発生しない場合は、特にページの更新の間隔が長い(20分程度)場合に、ビューステートの問題である可能性があることがわかりました。
そうでない場合は、いくつかのtry/catchブロックを試してください。これらはいくつかの簡単な方法です。
お役に立てば幸いです。
変更ドロップダウンの選択間に大きな遅延(> 20分)が発生した後、自動ポストバックドロップダウンのあるUpdatePanelでこのエラーが発生しました。
Web.cofigでセッションタイムアウトを増やしてみてください。例えば:
<sessionState mode="InProc" cookieless="true" timeout="720"/>;
追加<httpRuntime requestValidationMode="2.0"/>
in web.configおよびin YourPage.aspx set(ClientIDMode = "Static" ValidateRequest = "false")
::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::
例: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="data source=SATELLITE-PC;initial catalog=WT_Zadnji;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
サーバーSSL証明書(https)を追加した場合、エラーが発生することがあります。証明書が有効でない場合、このエラーが発生します。
ポストバックで次のエラーが発生しました。
エラー: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"/>