在CMS中,multiply包可能提供owin启动属性,有没有办法创建多个启动类?
如果不是,我将不得不创建一个启动类,其中包创建者可以注册他们的owin启动类,而cms启动类将负责运行这些。但是如果一个包中的某个人放入了一个启动属性,那可能是他的运行而不是cms启动。
我有什么方法可以说我的创业公司是最重要的,以便能够超越所有其他公司?
答案 0 :(得分:7)
您可以在应用程序中拥有多个启动类,并指示运行时选择其中一个。可以使用不同的友好名称声明多个Owinstartup属性,并使用appSetting owin:AppStartup传入要使用的相应Startup类的友好名称。 Here是有关如何拥有多个启动属性的详细文档。
答案 1 :(得分:2)
我知道这已经老了,但我最近遇到了这个问题,这就是我解决它的方法。我有一个使用这个OwinStartup方法的第三方库,但我也需要它来映射SignalR路由。 所以我只创建了一个启动所有已加载程序集的启动类,并找到启动类并调用它们
[assembly: OwinStartupAttribute(typeof(TestWeb.Startup))]
namespace TestWeb
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
foreach (Assembly startupAssembly in System.AppDomain.CurrentDomain.GetAssemblies().Where(assembly => assembly.GetCustomAttribute<OwinStartupAttribute>() != null))
{
OwinStartupAttribute startupAttribute = startupAssembly.GetCustomAttribute<OwinStartupAttribute>();
if (startupAttribute.StartupType != typeof(TestWeb.Startup))
{
object startupClass = Activator.CreateInstance(startupAttribute.StartupType);
string startupMethod = string.IsNullOrEmpty(startupAttribute.MethodName) ? "Configuration" : startupAttribute.MethodName;
startupAttribute.StartupType.GetMethod(startupMethod).Invoke(startupClass, new object[] { app });
}
}
}
}
}
但如果您不需要IAppBuilder实例,则可以使用WebActivatorEx代替