【发布时间】:2013-11-17 17:53:16
【问题描述】:
我刚刚安装了 Visual Studio 2013,创建了一个 MVC Web 应用程序项目,并注意到项目模板中有一个名为 Startup.cs 的新文件。
这是什么,它与 Global.asax.cs 有什么不同,有什么好的最佳实践来说明它的用途吗?
【问题讨论】:
标签: asp.net-mvc visual-studio-2013 owin
我刚刚安装了 Visual Studio 2013,创建了一个 MVC Web 应用程序项目,并注意到项目模板中有一个名为 Startup.cs 的新文件。
这是什么,它与 Global.asax.cs 有什么不同,有什么好的最佳实践来说明它的用途吗?
【问题讨论】:
标签: asp.net-mvc visual-studio-2013 owin
每个 OWIN 应用程序都有一个启动类,您可以在其中指定应用程序管道的组件。
如果您启动一个新的 Visual Studio 项目,您将在其中看到 OWIN 的片段。 OWIN 是一种规范,它定义了用于框架和服务器的 API 以进行协作。 OWIN的重点是解耦服务器和应用程序。 例如,ASP.NET Identity 使用 OWIN 安全,SignalR 自托管使用 OWIN 托管等,示例均使用 OWIN, 因此它们都需要有一个启动类,在“Startup.cs”文件中定义。
ASP.NET 应用程序文件 Global.asax 是一个可选文件,其中包含响应代码 由 ASP.NET 或 HttpModules 引发的应用程序级事件。
更多详情:
欧文
http://www.asp.net/aspnet/overview/owin-and-katana
Global.asax
http://msdn.microsoft.com/en-us/library/1xaas8a2(v=vs.71).aspx
您可以在以下文章中找到更多关于为什么选择 OWIN 的想法:
http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana
【讨论】:
该文件似乎与 SignalR 有关。引用VS 2013 release notes:
基于 OWIN 构建
SignalR 2.0 完全建立在 OWIN(用于 。网)。此更改使 SignalR 的设置过程更加丰富 在 Web 托管和自托管 SignalR 应用程序之间保持一致, 但也需要进行一些 API 更改。
MapHubs 和 MapConnection 现在是 MapSignalR
为了与 OWIN 标准兼容,这些方法已重命名 到 MapSignalR。不带参数调用的 MapSignalR 将映射所有集线器 (就像 MapHubs 在 1.x 版本中所做的那样);映射个人 PersistentConnection 对象,指定连接类型为类型 参数,并将连接的 URL 扩展名作为第一个 论据。
在 Owin 启动类中调用 MapSignalR 方法。视觉的 Studio 2013 包含一个 Owin 启动类的新模板;使用 此模板,请执行以下操作:
- 右键单击项目
- 选择添加、新项目...
- 选择 Owin 启动类。将新类命名为 Startup.cs。
在 Web 应用程序中,包含 MapSignalR 的 Owin 启动类 然后使用 Web.Config文件的应用设置节点,如下图。
在自托管应用程序中,Startup 类作为类型传递 WebApp.Start 方法的参数。
【讨论】:
Startup 类是 Katana/OWIN 用于初始化管道的约定。当您的应用程序启动时,配置函数内部的代码会运行以设置将要使用的组件。在 MVC 5 模板中,它用于连接所有构建在 OWIN 之上的身份验证中间件。
如果你想在 OWIN 中使用依赖注入,请查看 GitHub 上的这个项目:DotNetDoodle.Owin.Dependencies
【讨论】: