188 c# asp.net asp.net-mvc owin asp.net-mvc-5
例如,在一个全新的ASP.NET MVC 5应用程序中,使用MVC w /个人帐户模板,如果我删除Global.asax.cs该类并将其配置代码移动到Startup.cs Configuration()方法如下,有什么缺点?
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
ConfigureAuth(app);
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说,好处是,当将ASP.NET 4应用程序升级到ASP.NET 5并使用现在必须在Startup.cs类中配置的部分时,我不会在两个看起来相关的不同类中进行依赖注入和其他配置启动和配置.
dma*_*son 165
Startup.Configuration比Application_Start稍晚调用,但我不认为在大多数情况下差异会很大.
我相信我们在Global.asax中保留其他代码的主要原因是:
我认为第三个原因是默认情况下我们没有采用这种方法的最重要的原因,因为有些场景不包含此DLL,并且能够更改身份验证方法而不会使无关代码的位置无效(如路线登记).
但如果这些原因都不适用于您的场景,我认为您可以使用这种方法.
Sud*_*hra 29
对于那些寻找完整步骤的人:如果您希望创建一个基于OWIN的IIS托管Web API,这些步骤可以帮助您:
File -> New -> ProjectInstalled -> templates -> Other Project types -> Visual Studio Solutions -> Blank Solution targeting .NET 4.6在解决方案上,右键单击,添加Project -> Web -> ASP.NET Web Application(以.NET 4.6为目标)
3.1现在在ASP.NET 4.5模板中,选择Empty作为模板
3.2这将创建一个包含两个nuget包的空白解决方案:
Microsoft.CodeDom.Providers.DotNetCompilerPlatform v 1.0.0
Microsoft.Net.Compilers v 1.0.0
Run Code Online (Sandbox Code Playgroud)安装以下包:
Install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.3
Install-Package Microsoft.AspNet.WebApi -Version 5.2.3
Install-Package WebApiContrib.Formatting.Razor 2.3.0.0
Run Code Online (Sandbox Code Playgroud)对于OWIN:
Install-Package Microsoft.Owin.Host.SystemWeb
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
Run Code Online (Sandbox Code Playgroud)
然后使用Configuration方法添加Startup.cs:
[assembly:OwinStartup(typeof(namespace.Startup))]
public class Startup
{
/// <summary> Configurations the specified application. </summary>
/// <param name="app">The application.</param>
public static void Configuration(IAppBuilder app)
{
var httpConfiguration = CreateHttpConfiguration();
app
.UseWebApi(httpConfiguration);
}
/// <summary> Creates the HTTP configuration. </summary>
/// <returns> An <see cref="HttpConfiguration"/> to bootstrap the hosted API </returns>
public static HttpConfiguration CreateHttpConfiguration()
{
var httpConfiguration = new HttpConfiguration();
httpConfiguration.MapHttpAttributeRoutes();
return httpConfiguration;
}
}
Run Code Online (Sandbox Code Playgroud)
现在添加一个继承自的类,ApiController使用RoutePrefix属性和操作方法对其进行注释Route + HttpGet/PutPost(表示你所追求的Http动词),你应该好好去
Ale*_*rck 12
这是我对启动/托管Web应用程序的方式的理解,因为它非常令人困惑。一个小总结:
1.经典ASP.NET:仅编写在强制性IIS管道的最后一步中运行的应用程序代码
2.带OWIN的ASP.NET:配置.NET Web服务器并编写您的应用程序代码。不再直接与IIS耦合,因此您不再被迫使用它。
3. ASP.NET Core:配置主机和Web服务器以使用和编写您的应用程序代码。如果目标是.NET Core而不是完整的.NET Framework,则不再必须使用.NET Web服务器。
现在,我将详细介绍它的工作方式以及用于启动应用程序的类:
经典的ASP.NET应用程序将Global.asax文件作为入口点。这些应用程序只能在IIS中运行,并且您的代码将在IIS管道的末尾执行(因此IIS甚至在代码运行之前就由IIS负责CORS,身份验证)。从IIS 7开始,您可以在集成模式下运行应用程序,该模式将ASP.NET运行时集成到IIS中。这使您的代码可以配置以前(或仅在IIS本身中)无法实现的功能,例如在文件事件中重写URL或使用文件中的新部分。Application_StartGlobal.asax<system.webserver>web.config
首先,OWIN不是库,而是关于.NET Web服务器(例如IIS)如何与Web应用程序交互的规范。Microsoft本身有一个称为项目Katana的OWIN实现(通过几个不同的NuGet软件包分发)。该实现提供了IAppBuilder您在Startup类中遇到的接口以及Microsoft提供的一些OWIN中间件组件(OMC)。使用IAppBuilder以即插即用的方式基本上构成中间件时以为Web服务器创建管道(除了上面提到的IIS7 +中的ASP.NET管道之外),而不是被捆绑在一起到IIS管道(但是现在您将中间件组件用于CORS,将中间件组件用于身份验证...)。因此,您的应用程序不再专门与IIS耦合,您可以在任何.NET Web服务器上运行它,例如:
使所有事情变得令人困惑的是,Global.asaxOWIN Startup类仍然支持它们,尽管它们都可以做类似的事情。例如,您可以Global.asax使用OWIN中间件来实现CORS 并进行身份验证,这真的很令人困惑。
我的经验法则是一起删除Global.asax文件,以便在Startup需要添加OWIN时使用。
ASP.NET Core是下一步的发展,现在您可以定位.NET Core或完整的.NET Framework。以.NET Core为目标时,您可以在支持.NET Standard的任何主机上运行应用程序。这意味着您不再受限于.NET Web服务器(如前所述),而是可以将应用程序托管在Docker容器,Linux Web服务器,IIS ...中。
ASP.NET Core Web应用程序的入口点是Program.cs文件。在此配置主机,然后再次Startup在配置管道的位置指定您的类。使用OWIN(通过IAppBuilder.UseOwin扩展方法)是可选的,但完全受支持。
| 归档时间: |
|
| 查看次数: |
60629 次 |
| 最近记录: |