问题描述
我有一个使用IIS托管的ASP.NET建立的网站。 它具有一个插件系统,因此可以在运行时加载网站子文件夹中的.dll文件。 我已经完成了这项工作,但是我无法可靠地获取应该在网站启动时由插件捕获的api路由。
首先,我创建了一个新类,该类继承自DefaultAssembliesResolver:
public class MyAssemblyResolver : DefaultAssembliesResolver
{
public override ICollection<Assembly> GetAssemblies()
{
//Some logging is done here
return AppDomain.CurrentDomain.GetAssemblies().ToList();
}
}
然后我用自己的替换全局配置中的默认程序集解析器:
GlobalConfiguration.Configuration.Services.Replace(typeof(IAssembliesResolver),new MyAssemblyResolver());
最后,我要添加的实际路线如下所示:
[Authorize]
public class ExtensionsController : ApiController
{
//GET api/v1/Extensions/Test
[HttpGet]
[Route("api/v1/Extensions/Test")]
public String test()
{
return "Hello World!";
}
}
问题在于,仅有时完成了组装解析器的替换。 从我自己的日志记录中可以看到,只要调用GetAssemblies()方法,插件.dll的路由就可以访问并起作用。 我无法弄清楚为什么它被不一致地调用。 在我看来,我的GetAssemblies方法实际上不应该做任何事情-它只是返回当前已加载的程序集的列表-但是,当调用它时,会添加新的路由。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)