Azure Web ロールで実行されている WCF サービスの依存関係の登録を初期化しようとしていますが、クラスの静的コンストラクターが 2 回呼び出されるという非常に異常な動作が見られます。
これはDependencies
、アプリケーションの依存関係のレジストリ ポイントとして使用しているクラスです。
public static class Dependencies
{
private static IUnityContainer container;
static Dependencies()
{
Dependencies.container = new UnityContainer();
}
public static IUnityContainer Container
{
get
{
...
}
set
{
...
}
}
public static void ConfigureContainer()
{
var container = new UnityContainer();
// Configure container.
Dependencies.container = container;
}
}
のオーバーロードでRoleEntryPoint.OnStart()
、静的ConfigureContainer
メソッドを呼び出して、依存関係を登録したコンテナーをセットアップします。
public override bool OnStart()
{
// Configure container for dependency resolution.
Dependencies.ConfigureContainer();
return base.OnStart();
}
私の期待は、Dependencies
クラスの静的メンバーがこのコードによって初期化され、アプリケーションのコンポーネントで利用できるようになることです。
私が見ているのは (ブレークポイントと VS2012 デバッガーを使用して) の静的コンストラクターがDependencies
2 回呼び出されていることです。1 回目はアプリケーションの元の初期化時、もう 1 回はサービスへの最初の要求時です。後続のリクエストは静的コンストラクターを呼び出しません (予想どおり)。
ランタイムがこのように動作する理由と、依存関係の静的レジストリを生成する代わりに何をすべきかについての説明を聞きたいです。