与OWIN并排运行不同的框架

Geo*_*uer 5 .net owin

我对Owin的一大好处的印象是,它可以轻松地在没有IIS的情况下并行运行不同的Web框架IHttpHandler.(这对于将垂直功能切片分配为nuget功能非常重要.)

但是,我发现每个教程和文章都会讨论自托管和单个框架.这不是我感兴趣的,我有兴趣在同一个应用程序中运行mvc,nancy,web api甚至webforms.

我对OWIN的启用是否错误?说我想要

  • Mvc处理大多数请求
  • Webforms处理具有version = legacy标头的请求
  • 南希处理对/ Nancy/...的请求

我如何配置我的Startup类来启用它?

khe*_*ang 14

虽然用例听起来有点荒谬,但OWIN能够做到这一点绝对是对的.你可以用各种疯狂的方式组成你的管道.

直管道

典型的"直线"管道看起来像这样:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseWebApi(new MyHttpConfiguration());
        app.MapSignalR();
        app.UseNancy();
    }
}
Run Code Online (Sandbox Code Playgroud)

这将工作如下(给你托管http://localhost/)

  • WebAPI - http://localhost/api/*(默认路由)
  • SignalR - http://localhost/signalr(默认路由)
  • 南希 - http://localhost/*(将处理其他一切)

分支管道

您还可以在管道中创建分支:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseWebApi(new MyHttpConfiguration());

        app.Map("/newSite", site =>
        {
            site.MapSignalR();
            site.UseNancy();
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

这将工作如下(给你托管http://localhost/)

  • WebAPI - http://localhost/api/*(默认路由)
  • SignalR - http://localhost/newSite/signalr(默认路由)
  • 南希 - http://localhost/newSite/*(将处理其他一切)

  • [Jabbr](https://github.com/jabbr/jabbr)就是一个很好的例子.查看[他们的启动类](https://github.com/JabbR/JabbR/blob/e40634b4e6594ce4ebd6aea0a6864b8f61b1ed02/JabbR/App_Start/Startup.cs). (2认同)