代码之家  ›  专栏  ›  技术社区  ›  Luke Puplett

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

  •  1
  • Luke Puplett  · 技术社区  · 10 年前

    我理解OWIN是什么,它很好,而且Katana是微软的一个实现,是ASP.NET生态系统的标准。

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

    然而,一个新的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动作?奥温坐在管道的哪个位置?

    查看以下代码 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 回复  |  直到 10 年前
        1
  •  4
  •   Luke Puplett    10 年前

    当您使用Owin.Host.SystemWeb时,您将在通常的HttpModules管道中注入一个HttpModule,该HttpModule用于托管Owin管道。

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

    如果您想更好地控制何时运行,可以添加映射到传统事件序列的特定阶段标记。

    我推荐Prabu的文章:

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

    它提供了一个非常好的过程概述。