2

Unity を使用してインスタンスを解決します。WCF サービスを含めます。

しかし、私はトリックの問題を見つけました。WCF プログラムを IIS (WAS) にデプロイしましたが、Web サービスを実行しても問題ありません。

IIS(WAS) がアプリケーション プールをリサイクルした後、登録コードが実行されたことを確認します。しかし今、Web サービスは例外をスローします。

「例外が発生しました: 解決中に。」

次に、IIS サービスからの情報をログに記録します。つまり、この型を登録しないということです。

4

1 に答える 1

3

私はこの問題を自分で解決しました。

アプリケーション プールをリサイクルして新しいアプリケーション プールを作成すると、すべての DLL が新しい Asp.Net テンプレート フォルダーにコピーされます。

すべての "bin" DLL を AppDomain に強制的にロードするときは、bin のアセンブリに型を登録します。Asp.net 一時フォルダー アセンブリにはありません。だからUnityはそれが差分タイプだと思った。

ここで、アセンブリを現在のドメインにロードする方法を変更します

string binPath = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "bin");
foreach (string dll in Directory.GetFiles(binPath, "*.dll", SearchOption.AllDirectories))
{
  var assemblyFromCurrentDomain = Assembly.Load(Assembly.LoadFile(dll).FullName);

  Debug.Print("Add Assembly : {0}, {1}", assemblyFromCurrentDomain.FullName, assemblyFromCurrentDomain.Location);
}

その後、問題は修正されました。

于 2012-02-23T06:53:09.877 に答える