我有一个使用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)。
是否有更优雅的解决方案来确定正在执行OWIN管道的运行时应用程序?目前我检查app.Properties [“host.AppName”];但是,当网站的应用程序名称与其程序集配置相匹配时,CloudService应用程序是Owin启动assembly.class的名称。 (见要点)。这是骗局。
是否有一个更优雅/简单的解决方案,用于为我的每个Web应用程序在Nancy中指定自定义favicon,而不是创建单独的bootstrappers和执行运行时应用程序上下文检查?
答案 0 :(得分:0)
我在https://jabbr.net/#/rooms/owin和https://jabbr.net/#/rooms/nancyfx聊天板上的其他人的帮助下解决了这个问题
是。您可以从上下文中检查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))
{}
}
}
}