我刚刚安装了Visual Studio 2013,创建了一个MVC Web应用程序项目,并在项目模板中注意到一个名为Startup.cs的新文件。
这是什么,这与Global.asax.cs有何不同,是否有任何关于如何使用它的最佳实践?
答案 0 :(得分:32)
每个OWIN应用程序都有一个启动类,您可以在其中指定应用程序管道的组件。
如果您启动一个新的Visual Studio项目,您将看到其中的OWIN部分。 OWIN是一种规范,用于定义框架和服务器的API以进行协作。 OWIN的目的是解耦服务器和应用程序。 例如,ASP.NET Identity使用OWIN安全,SignalR自托管使用OWIN托管等,这些示例都使用OWIN, 因此,他们都需要一个启动类,在“Startup.cs”文件中定义。
Global.asax是ASP.NET应用程序文件,是一个可选文件,包含用于响应的代码 到ASP.NET或HttpModules引发的应用程序级事件。
更多详情:
<强> OWIN 强>
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
答案 1 :(得分:7)
该文件似乎与SignalR有关。引用VS 2013 release notes:
建立在OWIN
上SignalR 2.0完全基于OWIN(开放式Web界面)构建 。净)。此更改使SignalR的设置过程更加频繁 Web托管和自托管SignalR应用程序之间保持一致, 但是还需要进行一些API更改。
MapHubs和MapConnection现在是MapSignalR
为了与OWIN标准兼容,这些方法已重命名 到MapSignalR。不带参数调用的MapSignalR将映射所有集线器 (正如MapHubs在版本1.x中所做的那样);映射个人 PersistentConnection对象,指定连接类型作为类型 参数,以及作为第一个连接的URL扩展名 参数。
在Owin启动类中调用MapSignalR方法。视觉 Studio 2013包含Owin启动类的新模板;使用 在此模板中,执行以下操作:
- 右键单击项目
- 选择添加,新项目......
- 选择Owin Startup类。将新类命名为Startup.cs。
醇>在Web应用程序中,Owin启动类包含MapSignalR 然后使用中的条目将方法添加到Owin的启动过程中 Web.Config文件的应用程序设置节点,如下所示。
在自托管应用程序中,Startup类作为类型传递 WebApp.Start方法的参数。
答案 2 :(得分:5)
Startup类是Katana / OWIN寻找初始化管道的惯例。当您的应用程序启动时,将运行Configuration函数内部的代码来设置将要使用的组件。在MVC 5模板中,它用于连接构建在OWIN之上的身份验证中间件。
如果你想对OWIN使用依赖注入,请在GitHub上查看这个项目:DotNetDoodle.Owin.Dependencies