Katana 与 IIS 上的 ASP.NET 5 应用程序有何关系?
Posted
技术标签:
【中文标题】Katana 与 IIS 上的 ASP.NET 5 应用程序有何关系?【英文标题】:How does Katana relate to ASP.NET 5 applications on IIS? 【发布时间】:2015-01-30 13:28:30 【问题描述】:我了解 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。
我确信它很简单,但我很困惑。
【问题讨论】:
你在这里说的是 MVC 5 吗? ASP.NET 5,实际上包含了 MVC 6,它和 WebApi 一样是全功能的 OWIN。 MVC 5 仅包含一些 OWIN 功能,即便如此,它确实是 Identity 的一部分,而不是真正的 MVC 5。 Err... 后者,MVC 5,我相信。对不起,现在你指出来了,因为版本号重合我一定忘记了它们实际上是独立的。 【参考方案1】:当您使用 Owin.Host.SystemWeb 时,您将在通常的 HttpModules 管道中注入一个用于托管 OWIN 管道的 HttpModule。
从 IIS/ASP.NET 的角度来看,OWIN 管道将在该上下文中执行。
如果您想更好地控制何时运行,您可以添加映射到传统事件序列的特定阶段标记。
我推荐 Prabu 的文章:
http://www.asp.net/aspnet/overview/owin-and-katana/owin-middleware-in-the-iis-integrated-pipeline
它很好地概述了整个过程。
【讨论】:
以上是关于Katana 与 IIS 上的 ASP.NET 5 应用程序有何关系?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET MVC 5.2.3 和 Katana 中正确设置双重身份验证?