着信リクエストに署名してさらに送信したいWebサービスがあります。System.Security.Cryptography.RSACryptoServiceProviderの静的オブジェクトを使用しており、すべてのインスタンスが同じ静的オブジェクトを使用して署名しています。私はマイクロソフトで、静的オブジェクトがこのクラスに対してスレッドセーフであることを読みました。
問題は、Webサービスの負荷が高い場合、以下の例外を除いて署名が失敗することです。
`Exception Type: System.ObjectDisposedException
Message: Safe handle's handle field can only be set if the safe handle is not closed and has a ref count of 1.
ObjectName:
Data: System.Collections.ListDictionaryInternal
TargetSite: Void _ImportKey(System.Security.Cryptography.SafeProvHandle, Int32, System.Security.Cryptography.CspProviderFlags, System.Object, System.Security.Cryptography.SafeKeyHandle ByRef)
HelpLink: NULL
Source: mscorlib
StackTrace Information
****************************
at System.Security.Cryptography.Utils._ImportKey(SafeProvHandle hCSP, Int32 keyNumber, CspProviderFlags flags, Object cspObject, SafeKeyHandle& hKey)
at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters)`