8

誰でも助けることができますか?

(アプリケーションではなく) WCF ライブラリを作成しました。これを SVC IIS ページでホストします。

しかし、ユニティのものを一般的な場所にロードしたかったのです... global.asaxにロードできましたが、IIS Asp.netコンテナに関連付けられており、TDDを実行すると、この部分は実行されないため、私の解決ではありません動作します。

WCF ライブラリは純粋なクラスなので、OnStartup などのイベントを使用できるとは思えませんか?

私が考えた唯一の方法は、サービスが基本クラスから継承するものと、ある種の静的クラスを呼び出してユニティのブートストラップを行うインターフェイス..

私は少し迷っています。これが唯一の方法ですか、それとも私が知らない方法があります。

基本的なアイデアは...誰がwcfライブラリを呼び出すか、ユニティインジェクションを行う必要がある..

何か案は?

ありがとう

4

3 に答える 3

5

この問題に取り組むにはいくつかの方法があります。ここに2つの最良のオプションがあります:

カスタム ServiceHost を作成してInitializeRuntimeをオーバーライドできます

パブリック静的メソッド AppInitialize を使用して、App_Code ディレクトリに ApplicationStart というクラスを作成できます (ただし、少し匂いがあります)。

public static class ApplicationStart
{
    public static void AppInitialize()
    {
        // Initialise IoC container
    }
}

Wenlong Dongのブログに他の方法があります。

于 2009-10-08T13:18:24.837 に答える
0

IInstanceProvider を使用して、Unity または別の IOC コンテナーを使用してサービス オブジェクトを作成できます。その方法の詳細については、このブログ投稿を確認してください。

次に、Attribute として実装された IContractBehavior を使用して、ApplyDispatchBehavior メソッドで InstanceProvider を設定することにより、IInstanceProvider を DispatchRuntime に追加できます。

于 2009-10-08T13:02:53.417 に答える
0

Unity.WCFと呼ばれるオープン ソースの NuGet パッケージで、これを処理できます。

詳細とソース コードについては、http: //unitywcf.codeplex.com/を参照してください。

于 2012-01-20T10:06:04.927 に答える