Katana如何与IIS上的ASP.NET 5应用程序相关?

时间:2015-01-30 13:28:30

标签: asp.net-mvc asp.net-web-api owin katana

我理解OWIN是什么,它是好的,并且通常认为Katana是Microsoft实现的ASP.NET生态系统标准。

我还读到Katana到目前为止只设计用于WebApi和SignalR,因为它们不依赖于System.Web。凉。

然而,一个新的ASP.NET MVC 5项目模板确实包含了一些Katana的东西,并引用了Microsoft.Owin.Host.SystemWeb以及我感到困惑的地方。

  

" [SystemWeb]提供了一个在ASP.NET请求管道中运行的OWIN服务器"

     

http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

那么,在IIS上,在被路由到WebApi操作之前,有线请求是否会流经Owin管道?还有MVC的行动? Owin坐在管道的哪个位置?

查看ChallengeResult.cs模板中的以下代码:

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        Request.GetOwinContext().Authentication.Challenge(LoginProvider);

        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
        response.RequestMessage = Request;
        return Task.FromResult(response);
    }

这似乎与两条管道交谈;它告诉Owin管道上的认证中间件发送401质询,然后通过正常的响应消息系统返回401。

我确信这很简单,但我很困惑。

1 个答案:

答案 0 :(得分:4)

当您使用Owin.Host.SystemWeb时,您将在通常的HttpModules管道中注入一个HttpModule来承载OWIN管道。

从IIS / ASP.NET的角度来看,OWIN管道将在该上下文中执行。

如果您想对运行时间进行更精细的控制,可以添加映射到传统事件序列的特定舞台标记。

我推荐Prabu的文章:

http://www.asp.net/aspnet/overview/owin-and-katana/owin-middleware-in-the-iis-integrated-pipeline

它给出了一个非常好的过程概述。