与OWIN并排运行不同的框架

时间:2014-03-06 05:03:07

标签: .net owin

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

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

OWIN启用此功能我错了吗?说我想要

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

如何配置我的Startup课程以启用此功能?

1 个答案:

答案 0 :(得分:14)

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

直管道

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

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

这将按如下方式工作(假设您在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();
        });
    }
}

这将按如下方式工作(假设您在http://localhost/上托管)

  • WebAPI - http://localhost/api/*(默认路由)
  • SignalR - http://localhost/newSite/signalr(默认路线)
  • 南希 - http://localhost/newSite/*(将处理其他所有事情)