リフレクションを使用して、wcfで拡張可能なプロジェクトを作成しました。Webサービスは、入力要求に応じて、実行時にさまざまなモジュールをロードします。モジュールライブラリを動的にロードするために.NETリフレクションを使用します。システムはIISで実行されます。
テスト中に、Reflectionを介してロードされた既存のdllを置き換えることができないことに気付きました。新しいdllをbinディレクトリにコピーしようとしましたが、「アプリケーションで使用されているdll」と同様のエラーが発生しました。システムでのみそのdllを使用していることを確認できます。ただし、dllを置き換えると、IISが停止する可能性があります。ただし、IISを停止せずにdllを置き換える必要があります。とにかくこれをコードレベルで処理できますか?
迅速な対応に感謝します。
IOrder orderImpl = null;
try
{
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\" + assemInfo.AssemblyQualifiedName + ".dll";
path = path.Replace("file:\\", "");
Assembly a = Assembly.LoadFile(path);
Type commandType = a.GetType(assemInfo.AssemblyQualifiedName + "." + assemInfo.ClassName);
orderImpl = (IOrder)commandType.GetConstructor(new System.Type[] { typeof(LocalOrderRequest) }).Invoke(new object[] { order });
}
catch (Exception ex)
{
throw new OrderImplException("-1", ex.Message);
}
ありがとうRSF