WebAPIアプリケーションにプラグインDLLをロードする必要があります。そこで、プラグインが既存のコントローラの中で反応するアクションを公開するカスタムIPluginインターフェイスを作成し、さらにプラグインDLLがより多くのルートを提供できるようにしたいと考えています。だから私は参照リストにDLLを追加することはできません、私は動的に設定ファイルのエントリに基づいてそれをロードする必要があります。プラグインDLLをWebAPIアプリケーションにロード
したがって、私は私のWebAPIののbinディレクトリ(C:\users\Alexander\Source\Repos\Testbed\WebAPI\bin
)にExamplePlugin.DLLを追加し、Web構成ののAppSettingsからそれを参照:
<add key="ExamplePlugin" value="ExamplePlugin.dll" />
とこのようにそれをロードしよう:
string dllRelativePath = ConfigurationManager.AppSettings[possiblePlugin];
FileInfo dllFileInfo = new FileInfo(dllRelativePath);
Assembly dllAssembly = Assembly.LoadFile(dllFileInfo.FullName);
foreach (Type type in dllAssembly.GetExportedTypes())
{
if (typeof(IPlugin).IsAssignableFrom(type))
{
IPlugin i = (IPlugin)Activator.CreateInstance(type);
PluginManager.Add(i);
}
}
をしかし、エラーメッセージには、
System.IO.FileNotFoundException:と表示されます。 ファイルを読み込めませんでした。c:¥windows¥system32¥inetsrv¥ExamplePlugin.dll: ダッシュシステムでは、ファイルシステムが見つかりませんでした。 (Ausnahmeフォン HRESULT:0x80070002が)
なぜWebAPIのDLLが間違ったフォルダで検索され、どのように私はこの問題を解決することができますか?
:私はテストに成功している[' HostingEnvironment.MapPath'](https://msdn.microsoft.com/en-us/library/system.web.hosting .hostingenvironment.mappath(v = vs.110).aspx)。 – Alexander