0

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

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

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

此代码作为 Azure 网站或 Azure 云服务执行。根据它在其中执行的上下文,我想使用一个特定的图标,作为嵌入式资源从单独的程序集中加载。我通过指定单独的 NancyBootstrappers 来做到这一点(每个都为其上下文加载正确的图标)。

  1. 是否有更优雅的解决方案来确定正在执行 OWIN 管道的运行时应用程序?目前我检查 app.Properties["host.AppName"] ; 然而,虽然网站的应用程序名称与它的程序集配置匹配,但 CloudService 应用程序是 Owin 启动程序集.class 的名称。(见要点)。真是胡说八道。

  2. 有没有比创建单独的引导程序和执行运行时应用程序上下文检查更优雅/简单的解决方案来为我的每个 Web 应用程序在 Nancy 中指定自定义图标?

4

1 回答 1

0

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

  1. 是的。您可以根据上下文检查 OWIN 主机属性:

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

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))
            {}
        }
    }
}
于 2013-12-09T22:13:47.670 回答