最近、実稼働環境で WCF Web サービスの 1 つがクラッシュするという問題が発生しました。クラッシュ中にメモリ ダンプがあり、windbg を使用してデバッグすると、次のスタック トレースが得られます。
* *例外オブジェクト: 000000000a1e5db8 例外の種類: System.ObjectDisposedException メッセージ: 破棄されたオブジェクトにアクセスできません。内部例外:
enter code here
**StackTrace (生成): System_ServiceModel_ni!System.ServiceModel.Channels.CommunicationObject.ThrowIfClosed()+0xfb2737 System_ServiceModel_ni!System.ServiceModel.Channels.ServiceChannel.CleanupChannelCollections()+0x37 System_ServiceModel_ni!System.ServiceModel.Channels.ServiceChannel.OnAbort()+ 0x78 System_ServiceModel_ni!System.ServiceModel.Channels.CommunicationObject.Abort()+0x28e System_ServiceModel_ni!System.ServiceModel.Channels.ServiceChannel+SessionIdleManager.TimerCallback()+0x6c System_Runtime_DurableInstancing_ni!System.Runtime.IOThreadScheduler+ScheduledOverlapped.IOCallback(UInt32, UInt32, System .Threading.NativeOverlapped*)+0x71 System_Runtime_DurableInstancing_ni!System.Runtime.Fx+IOCompletionThunk.UnhandledExceptionFrame(UInt32, UInt32, System.Threading.NativeOverlapped*)+0xdbc70 mscorlib_ni!System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)+0x96** StackTraceString: HResult: 80131622 StackTraceString: HResult: 80131622**
これがいつ発生するかについて、誰かがこの例外についてより多くの洞察を与えることができますか?
WCF Web サービスは、.net Framework 4.0 を使用して Windows 2008 サーバーで実行されていました。
その他の詳細:
ConcurrencyMode = Multiple
InstanceContextMode = PerSession
私たちの Web サービスは、他のいくつかの wcf サービスを呼び出します。それらのバインドと動作の情報は次のとおりです。
<behavior name="NAME">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling maxConcurrentSessions="1000" maxConcurrentCalls="1000" maxConcurrentInstances="10`enter code here`00"/>
<dataContractSerializer maxItemsInObjectGraph="655360"/>
</behavior>
<binding name="NAME" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="50" maxBufferPoolSize="524288" maxBufferSize="10485760" maxConnections="150" maxReceivedMessageSize="10485760">
<readerQuotas maxDepth="32" maxStringContentLength="10485760" maxArrayLength="10485760" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
<security mode="None">
<transport clientCredentialType="Windows" protectionLevel="None" />
</security>
</binding>