アプリケーションを実行すると、定期的にエラー メッセージが表示されることに気付きました。
Server Error in '/' Application.
Buffer cannot be null.
Parameter name: buffer
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentNullException: Buffer cannot be null.
Parameter name: buffer
スタックトレース:
[ArgumentNullException: Buffer cannot be null.
Parameter name: buffer]
System.IO.MemoryStream..ctor(Byte[] buffer, Boolean writable) +12627669
MemcachedProviders.Session.Common.Deserialize(HttpContext context, Byte[] serializedItems, Int32 timeout) +47
MemcachedProviders.Session.Db.SQLDbOperations.GetItem(String strSessionId, String strApplicationName, Int32 iTime, HttpContext context, Boolean lockRecord, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags) +1221
MemcachedProviders.Session.SessionStateProvider.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actions) +1069
System.Web.SessionState.SessionStateModule.GetSessionStateItem() +178
System.Web.SessionState.SessionStateModule.PollLockedSessionCallback(Object state) +299
[HttpException (0x80004005): Exception of type 'System.Web.HttpException' was thrown.]
System.Web.SessionState.SessionStateModule.EndAcquireState(IAsyncResult ar) +11513726
System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) +107
私たちのアプリケーションは Enyim memcached と MemcachedProviders を使用し、負荷分散された環境で実行されます。
このアプリケーションは、PDF レポートの管理と回答のコンパイルを行い、最終レポート PDF を生成します。そのため、ストリームをかなり使用します。
Web サービスも公開しているため、この問題は管理アプリケーションにのみ影響しているように見えますが、サービス定義と WSDL を見てもエラーは発生しません。
DB のセッション テーブルを見ると、それらが作成されていることがわかりますが、それらの多くは SessionItems フィールドに null があり、locked フラグが 1 に設定されています。データのタイム スタンプは、null バッファ エラーの発生に関連しているようです。
これは、バッファ セットが正しくないか、上限に達している場合ですか?