大きな負荷がかかった ASP.NET アプリケーションでカスタム構成セクション ハンドラを使用するとアクセス違反が発生する

文書翻訳 文書翻訳
文書番号: 307513 - 対象製品
この記事は、以前は次の ID で公開されていました: JP307513
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
この資料では、次の Microsoft .NET Framework クラス ライブラリの名前空間を参照しています。
  • System.Configuration
すべて展開する | すべて折りたたむ

現象

ASP.NET アプリケーションでカスタム構成セクション ハンドラを使用している場合、ASP.NET アプリケーションに大きな負荷がかかっているときに、Aspnet_wp.exe プロセス (インターネット インフォメーション サービス (IIS) 6.0 上で実行するアプリケーションの場合は W3wp.exe プロセス) でアクセス違反の初回例外が発生することがあります。

原因

IConfigurationSectionHandler インターフェイスの実装がスレッド セーフかつステートレスでない場合、または Create メソッドから返されるオブジェクトがスレッド セーフかつ不変でない場合、複数のスレッドが同一の構成オブジェクトに同時にアクセスすると、この問題が発生する可能性があります。

解決方法

独自の ASP.NET 構成セクション ハンドラを作成する場合、以下の指針に従って IConfigurationSectionHandler インターフェイスを実装します。
  • IConfigurationSectionHandler インターフェイスを実装するクラスのインスタンスは、スレッド セーフかつステートレスである必要があります。
  • IConfigurationSectionHandler.Create メソッドから返されるオブジェクトは、スレッド セーフかつ不変である必要があります。
  • IConfigurationSectionHandler.Create メソッドへの親引数を変更しないようにします。

状況

この動作は仕様です。

詳細

IConfigurationSectionHandler のインスタンスはスレッド セーフかつステートレスである必要があります。これは、IConfigurationSectionHandler.Create メソッドが複数のスレッドから同時に呼び出し可能である必要があるためです。

また、IConfigurationSectionHandler.Create によって生成される構成オブジェクトはスレッド セーフかつ不変である必要があります。構成システムは構成オブジェクトをキャッシュに保持するため、IConfigurationSectionHandler.Create への親引数は変更しないことが重要です。たとえば、IConfigurationSectionHandler.Create の戻り値が、親をわずかに変更しただけのものである場合、元の親ではなく複製を変更します。

関連情報

ASP.NET の構成の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
307626 [INFO] ASP.NET の構成の概要
309045 [HOW TO] Visual C# .NET で独自の ASP.NET 構成セクション ハンドラを作成する方法

プロパティ

文書番号: 307513 - 最終更新日: 2014年2月24日 - リビジョン: 3.2
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft .NET Framework 1.1
キーワード:?
kbnosurvey kbarchive kbconfig kbhttphandlers kbhttpruntime kbprb kbreadme KB307513
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com