【问题标题】:Is it possible to use two different Owin startup file at run time?是否可以在运行时使用两个不同的 Owin 启动文件?
【发布时间】:2018-08-01 15:39:06
【问题描述】:

我正在使用带有 MEF framework 的 Asp.net MVC 5 应用程序,以允许我将 MVC 应用程序设计为主应用程序中的插件。

我的一个插件需要有自己的OwinStart up 类,该类在属于我的主应用程序的主 Owin 类之后运行。

换句话说,main.dllStartup 类,它总是需要首先运行,然后plugin.dll 有一个 Startup 类需要第二个运行。

是否可以有 2 个自己的启动类?

来自Docs about detecting的StartUp类

OwinStartup 属性会覆盖命名约定。你可以 还可以使用此属性指定一个友好名称,但是,使用 友好名称要求您还使用 appSetting 元素 配置文件。

所以我试着像这样添加一个友好的名字

[assembly: OwinStartup("pluginStartup", typeof(plugin.Startup))]

在配置文件中添加以下内容

<appSettings>  
  <add key="owin:appStartup" value="Main.Startup, Main" />
</appSettings>

但这并没有归档我的Plugin.Startup,它只运行Main.Startup

有没有办法运行两个不同的Startup 类?

https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-startup-class-detection

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-5 owin mef


    【解决方案1】:

    似乎无法运行多个启动文件。

    但是,我使用反射来完成工作。基本上,我在所有程序集中搜索实现IAppConfiguration 接口的任何类,然后在该实例上调用Configuration

    这是我的做法。

    我创建了一个界面

    public interface IAppConfiguration
    {
        void Configuration(IAppBuilder app);
    }
    

    然后在我的main.dll 中,我将以下代码添加到我的Startup 类中。

        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
            ConfigurePlugins(app);
        }
    
        private static void ConfigurePlugins(IAppBuilder app)
        {
            try
            {
                foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
                {
                    var startups = assembly.GetTypes().Where(x => x.IsClass && typeof(IAppConfiguration ).IsAssignableFrom(x)).ToList();
    
                    foreach (Type startup in startups)
                    {
                        var config = (IAppConfiguration )Activator.CreateInstance(startup);
    
                        config.Configuration(app);
                    }
                }
            }
            catch
            {
    
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 2017-06-18
      相关资源
      最近更新 更多