我理解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。
我确信这很简单,但我很困惑。
答案 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
它给出了一个非常好的过程概述。