34

現在 IIS7 でホストされている WCF アプリケーションに netTcpBinding を使用したいのですが、これは代わりに WAS を使用するように構成することを意味します。これはかなり簡単ですが、私のアプリケーションは以前に global.asax ファイルの Application_Start イベントを利用していました。httpContext へのアクセスは必要ありませんが (IIS7 でアクセスが削除されたことを理解しています)、それでも start または init メソッドにフックしたいですか?

IIS7 と同様に WAS でアプリケーションをホストする場合、同等のものは存在しますか?

クラシックモードを使用することはオプションではありません(これもhttpcontextには興味がなく、これはhttpバインディングを使用している場合にのみ機能するようです)-そして、app_codeフォルダーの中に静的クラスを配置する例を見てきました恐ろしいハック。

4

2 に答える 2

26

私はAppInitialize()あなたが探している方法だと信じています。これを使用して、WAS がホストする WCF サービスでキャッスル ウィンザーを初期化する方法に関する記事を次に示します。

Castle Windsor および非 HTTP プロトコル WCF サービス

Application_Start()この記事の本質は、 WAS で呼び出されない which を使用する代わりに、次のとおりです。

protected void Application_Start(object sender, EventArgs e)
{
   var container = new WindsorContainer("ioc.config");
   DefaultServiceHostFactory.RegisterContainer(container.Kernel);
}

使用する:

public class InitialiseService
{
   /// <summary>
   /// Application initialisation method where we register our IOC container.
   /// </summary>
   public static void AppInitialize()
   {
      var container = new WindsorContainer("ioc.config");
      DefaultServiceHostFactory.RegisterContainer(container.Kernel);
   }
}

マットを引用するには:

私はホスト ファクトリをより詳細に見て、DefaultServiceHostFactory. ただし、はるかに簡単な解決策があるようです。それは、ほとんど文書化されていない AppInitialize メソッドを利用することです。クラス (任意のクラス) を作成し、それをApp_Codeプロジェクトの ASP.NET フォルダーに配置し、以下に定義するメソッド シグネチャを与えると、この小さな赤ちゃんは、必要なときに正確に起動されます。その後、そこで IoC コンテナを初期化できます。

于 2010-03-16T12:11:04.760 に答える