从OWIN管道确定应用程序上下文?

时间:2013-12-06 00:01:23

标签: azure owin katana nancy

我有一个使用Nancy的OWIN管道:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseNancy();
    }
}

UseNancy()实际上是对我在gist中定义的自定义扩展方法的调用:https://gist.github.com/TheFastCat/0b7635d9e5795b44e72e

此代码既可以作为Azure网站也可以作为Azure云服务执行。基于它正在执行的上下文,我想使用特定的favicon,从单独的程序集加载为嵌入式资源。我这样做是通过指定单独的NancyBootstrappers(每个都为其上下文加载适当的favicon)。

  1. 是否有更优雅的解决方案来确定正在执行OWIN管道的运行时应用程序?目前我检查app.Properties [“host.AppName”];但是,当网站的应用程序名称与其程序集配置相匹配时,CloudService应用程序是Owin启动assembly.class的名称。 (见要点)。这是骗局。

  2. 是否有一个更优雅/简单的解决方案,用于为我的每个Web应用程序在Nancy中指定自定义favicon,而不是创建单独的bootstrappers和执行运行时应用程序上下文检查?

1 个答案:

答案 0 :(得分:0)

我在https://jabbr.net/#/rooms/owinhttps://jabbr.net/#/rooms/nancyfx聊天板上的其他人的帮助下解决了这个问题

  1. 是。您可以从上下文中检查OWIN主机属性:

    if(app.Properties.ContainsKey(“System.Net.HttpListener”)) {          //自托管应用程序上下文 }

  2. 2。)是的。

    namespace ClassLib
    {
        public class Startup() 
        { 
            public Startup(byte[] favIcon)  { ... }
    
            public void Configuration(IAppBuilder app) { ... }
        }
    

    }

    [assembly: OwinStartup(typeof(WebHost.Startup))]
    namespace WebHost
    {
        public class Startup() 
        { 
            public voic Configuration(IAppBuilder app)
            {
                new ClassLib.Startup(webhostFavIcon).Configuration(app);
            }
        }
    

    }

    namespace SelfHost
    {
        private class Program() 
        { 
            public void Main(string[] args)
            {
                using(WebApp.Start(app => new ClassLib.Startup(selfHostFavIcon).Configuration(app))
                {}
            }
        }
    }