【问题标题】:Does OWIN invoke MVC yet (ASP.NET MVC)?OWIN 是否调用 MVC(ASP.NET MVC)?
【发布时间】:2013-10-25 08:14:40
【问题描述】:

查看 Visual Studio 2013 中的标准新 MVC 5 项目,您会发现它现在包含 OWIN。

有一个新的 OWIN Startup 类可以配置身份验证,但是我看不到 MVC5 是如何/在哪里注册到 OWIN 的。这是在哪里发生的?

我在这里假设所有请求在进入 MVC 管道之前都通过 OWIN。他们为什么还要包括 OWIN?

  • 请注意:我不是在问如何设置 OWIN,这在文档中很容易解释。我对 MVC5 如何使用 OWIN 很感兴趣。

【问题讨论】:

  • 看来 ASP.NET vNEXT 将使用 OWIN 和项目 Helios。
  • 这只是猜测还是您是否找到消息来源说将使用 OWIN?如果你找到了来源,你介意分享一下吗?
  • 在这篇文章中,您可以看到 Helios(在 OWIN 上运行并替换 System.Web)和统一的 MVC/Web.Api 已得到确认。 davidfowl.com/asp-net-vnext

标签: asp.net-mvc-5 owin


【解决方案1】:

更新:我弄清楚了为什么 MVC5 使用 OWIN,即使请求是由 IIS 管道而不是 OWIN 处理的。

MVC5 不通过 OWIN,但看起来这在未来可能会改变。相反,MVC 目前仍然需要通过 IIS 集成管道。 OWIN 包含在默认 MVC 项目中的原因是 MVC5 可以使用 Owin 中间件组件。

来自OWIN middleware in the iis integrated pipeline

为了让 OMC 参与同样的基于事件的执行 排序,Katana 运行时代码通过启动扫描 配置并将每个中间件组件订阅到 集成管道事件。

这在ASP.NET vNext 中确实发生了变化,因为 Web.Api 和 MVC 已被合并并放弃 System.Web 以支持 OWIN 和项目 Helios。

【讨论】:

    【解决方案2】:
    • MVC 5 未向 OWIN 注册。
    • OWIN 已注册为在应用程序之前启动 (PreApplicationStartMethod)。
    • 并且在 Pre-application-startup 时,OwinStartup 注册类用于配置当前应用程序。

    [assembly: OwinStartup(typeof(WebApplication1.Startup))]

    startup.cs 中的上述行将加载类以配置 OWIN。 再看OWIN Startup class detection

    【讨论】:

    • 这并不能解释为什么使用 OWIN。甚至包含 OWIN 的原因是使用共享 OWIN 中间件组件进行身份验证。这样,基于 OWIN 和 IIS 的应用程序都可以使用相同的身份验证库。
    • “如何/在哪里向 OWIN 注册 MVC5。这是在哪里发生的?”在这种情况下,我的回答是恰当的。您的问题根本不代表“为什么”上下文。令人惊讶...
    • 添加“为什么”会使您的答案更加完整。我认为您可以 MVC 需要 OWIN 来做某事却无法解释是什么,这很奇怪。我显然是想弄清楚为什么现在包含 OWIN。
    • 我了解你目前的心态,但是写题的时候,我只能看懂写的是什么,看不懂背后的心意。 :-),无论如何,我相信任何阅读问题和答案的人都会对所有人有很好的了解。但我很确定,对于这里提出的问题,标记的答案是不合适的。
    猜你喜欢
    • 2017-05-12
    • 2023-03-23
    • 2015-10-18
    • 1970-01-01
    • 2015-06-09
    • 2014-01-02
    • 2015-08-21
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多