在多个包可能提供 owin 启动属性的 CMS 中,有没有办法创建多个启动类?
如果不是,我将不得不创建一个启动类,包创建者可以在其中注册他们的 owin 启动类,并且 cms 启动类将负责运行这些。但是,如果包中的某个人输入了启动属性,则可能是他运行而不是 cms 启动。
有什么方法可以告诉我我的创业公司是最重要的,这样才能超越所有其他公司?
在多个包可能提供 owin 启动属性的 CMS 中,有没有办法创建多个启动类?
如果不是,我将不得不创建一个启动类,包创建者可以在其中注册他们的 owin 启动类,并且 cms 启动类将负责运行这些。但是,如果包中的某个人输入了启动属性,则可能是他运行而不是 cms 启动。
有什么方法可以告诉我我的创业公司是最重要的,这样才能超越所有其他公司?
您可以在一个应用程序中有多个启动类,并指示运行时选择其中之一。可以使用不同的友好名称声明多个 Owinstartup 属性,并使用 appSetting owin:AppStartup 传入要使用的相应 Startup 类的友好名称。这是有关如何拥有多个启动属性的详细文档。
我知道这很旧,但我最近遇到了这个问题,这就是我解决它的方法。我有一个使用此 OwinStartup 方法的 3rd 方库,但我还需要它来映射 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