当我尝试在不同的网址上启动两个应用时,我遇到了属性路由中间件的问题。如果我在单独的应用程序中有两个类似的路由,但使用不同的http方法web.api似乎只找到其中一种方法。
Microsoft.Owin.Hosting.WebApp.Start<Admin.Startup>("http://localhost:1000");
Microsoft.Owin.Hosting.WebApp.Start<Startup>("http://localhost:1001");
如何隔离这两个应用,以便属性路由不冲突?
答案 0 :(得分:3)
根据您的上一条评论,以下示例过滤掉程序集:
config.Services.Replace(typeof(IAssembliesResolver), new CustomAssembliesResolver());
public class CustomAssembliesResolver : DefaultAssembliesResolver
{
public override ICollection<Assembly> GetAssemblies()
{
ICollection<Assembly> defaultProbedAssemblies = base.GetAssemblies();
//TODO: filter out the assemblies that you do not want to be probed
return defaultProbedAssemblies;
}
}
答案 1 :(得分:0)
我有完全相同的问题,@ KiranChalla的回答让我走上了正确的道路(谢谢!)。问题确实在于装配扫描比我想要的要深。对我来说,我一直希望扫描只包括当前&#34;当前&#34;定义了Startup
,因为这是所有相关控制器都存在的Web API项目。我创建了一个总是只返回一个程序集的解析器:
public class SingleAssemblyResolver : IAssembliesResolver
{
private readonly Assembly _ass;
public SingleAssemblyResolver(Assembly ass) {
_ass = ass;
}
public ICollection<Assembly> GetAssemblies() {
return new[] { _ass };
}
}
在每个Startup
注册时,告诉它哪个程序集(&#34;这个&#34;一个):
config.Services.Replace(typeof(IAssembliesResolver),
new SingleAssemblyResolver(this.GetType().Assembly));