杭州企业网站建设 哪里好,室内设计难学吗,投资集团网站建设方案,苏州专业网站建设公司1.1. 概述在ASP.NET Core之前#xff0c;ASP.NET Framework应用程序由IIS加载。Web应用程序的入口点由InetMgr.exe创建并调用托管。以初始化过程中触发HttpApplication.Application_Start()事件。开发人员第一次执行代码的机会是处理Application_StartGlobal.asax中的事件。在… 1.1. 概述在ASP.NET Core之前ASP.NET Framework应用程序由IIS加载。Web应用程序的入口点由InetMgr.exe创建并调用托管。以初始化过程中触发HttpApplication.Application_Start()事件。开发人员第一次执行代码的机会是处理Application_StartGlobal.asax中的事件。在ASP.NET Core中Global.asax文件不再可用已被新的初始化过程替代。ASP.NET Core 应用程序是在.NET Core 控制台程序下调用特定的库这是ASP.NET Core应用程序开发的根本变化。所有的ASP.NET托管库都是从Program开始执行而不是由IIS托管。也就是说.NET工具链可以同时用于.NET Core控制台应用程序和ASP.NET Core应用程序。using System;using Microsoft.AspNetCore.Hosting;namespace aspnetcoreapp{ public class Program{ public static void Main(string[] args) { var host new WebHostBuilder().UseKestrel() //指定宿主程序为Kestrel.UseStartupStartup()// 调用Startup.cs类下的Configure 和 ConfigureServices.Build();host.Run();}}
}以上是Program类中Main方法的示例代码Main方法负责初始化Web主机调用Startup和执行应用程序。主机将调用Startup类下面的Configure和ConfigureServices方法。1.2. 文件配置1.2.1. Starup文件配置对于一个ASP.NET Core 程序而言Startup 类是必须的。ASP.NET Core在程序启动时会从Program类中开始执行然后再找到UseStartupStartup中找到配置的Startup的类如果不指定Startup类会导致启动失败。在Startup中必须定义Configure方法而ConfigureServices方法则是可选的方法会在程序第一次启动时被调用类似传统的ASP.NET MVC的路由和应用程序状态均可在Startup中配置也可以在此初始化所需中间件。Configure在ASP.NET Core 应用程序中Configure方法用于指定中间件以什么样的形式响应HTTP请求。using System;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.AspNetCore.Http;namespace aspnetcoreapp{ public class Startup{ public Startup(IConfiguration configuration) {Configuration configuration;} public IConfiguration Configuration { get; } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()){app.UseDeveloperExceptionPage();app.UseBrowserLink();} else{app.UseExceptionHandler(/Home/Error);}app.UseStaticFiles();app.UseMvc(routes {routes.MapRoute(name: default,template: {controllerHome}/{actionIndex}/{id?});});}}
}ASP.NET Core是通过对IApplicationBuilder进行扩展来构建中间件的 上面代码中每个use扩展方法都是将中间件添加到请求管道。也可以给Configure方法附加服务如IHostingEnvironment这些服务在ConfigureServices方法中被初始化。用ASP.NET Core项目模板添加的应用程序默认添加的几个中间件UseStaticFiles 允许应用程序提供静态资源。UseMvc 将MVC添加到管道并允许配置路由。ConfigureServicesConfigureServices方法是应用程序运行时将服务添加到容器中用ASP.NET Core项目模板的时候默认会将MVC的服务添加到容器中public void ConfigureServices(IServiceCollection services){services.AddMvc();
}接下来举一个例子在实际应用中ConfigureServices方法和Configure方法配合使用在ASP.NET Core中有一个UI开发框架Telerik UI for ASP.NET Core它有60多个UI组件不仅支持ASP.NET Core的跨平台布署模式而且还支持前端自适应渲染。当在项目中应用Telerik UI的时候首先在项目中引用相关的包然后再在ConfigureServices方法中将Kendo UI服务添加到容器中public void ConfigureServices(IServiceCollection services){services.AddKendo();
}接下来在Configure中设置Kendo UIpublic void Configure(IApplicationBuilder app, IHostingEnvironment env){ //...app.UseKendo(env);
}1.2.2. appsetting.json配置Configuration API 提供了一个基于键-值对来配置应用程序的方法在运行时可以从多个来源来读取配置。键-值对可以分组形成多层结构。键-值对可以配置在不同的地方如文件、内存等其中放在内存中不能持久化这里笔者选择将其配置在appsetting.json文件里面。配置appsetting文件{key1: 字符串,key2: 2,key3:true,parentObj: {key1: sub-key1},members: [{name: Lily,age: 18},{name: Lucy,age: 17}]}一个分层结构的JSON文件键如key1作为索引器值作为参数类型可以为字符串、数字、布尔、对象、数组。下面具体来看下在应用中怎样使用。在应用程序加加载和应用配置文件public static IConfigurationRoot Configuration { get; set; }public static void Main(string[] args null){ var builder new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile(appsettings.json);Configuration builder.Build();Console.WriteLine($key1 {Configuration[key1]});Console.WriteLine($key2 {Configuration[key2]});Console.WriteLine($subkey1 {Configuration[parentObj:key1]});Console.WriteLine();Console.WriteLine(members:);Console.Write(${Configuration[members:0:name]}, );Console.WriteLine($age {Configuration[members:0:age]});Console.Write(${Configuration[members:1:name]}, );Console.WriteLine($age {Configuration[members:1:age]});Console.WriteLine();Console.WriteLine(Press a key...);Console.ReadKey();
}由于加载的是一个JSON文件,所以文件加载进来以后程序可以直接将它当作一个JSON对象来使用。如果有过动态语言使用经验的同学来说这种方式就比较熟悉了。只在这里访问属性的时候将平时常见的.变成了:这和写的JSON对象更接近。1.3. 处理管道中间件在ASP.NET Core应用程序中使用中间件应用程序所做的任何事情包括服务器中的静态文件都是由中间件来完成的。没有任何中间件的应用程序在请求的出错时候简单返回404 Not Found。中间件可以让您完全控制请求的处理方式并且让您的应用程序更加精简。当接收到一个请求时请求会交给中间件构成的中间件管道进行处理管道就是多个中间件构成请求从一个中间件的一端进入从中间件的另一端出来每个中间件都可以对HttpContext请求开始和结束进行处理 frameborder0 scrollingno styleborder-width: initial;border-style: none;width: 549px;height: 364px;/在ASP.NET Core中可以用Run、Map和Use三种方式来配置HTTP管道。Run 方法称为短路管道因为它不会调用 next 请求委托。因此Run方法一般在管道尾部被调用。Run 是一种惯例有些中间件组件可能会暴露他们自己的 Run方法而这些方法只能在管道末尾处运行。下面两段代码是等效的因为Use没有调用next方法Run方法示例代码public void Configure(IApplicationBuilder app, IHostingEnvironment env){app.Run(async context { await context.Response.WriteAsync(environment env);});}Use方法不执行next时示例代码public void Configure(IApplicationBuilder app, IHostingEnvironment env){app.Use(async (context, next) { await context.Response.WriteAsync(environment env);});}在.NET Core 中约定了Map*扩展被用于分支管道当前的实现已支持基于请求路径或使用谓词来进入分支。Map扩展方法用于匹配基于请求路径的请求委托。Map只接受路径并配置单独的中间件管道的功能。private static void HandleMapUrl(IApplicationBuilder app){app.Run(async context { await context.Response.WriteAsync(Map Url Test Successful);});
}public void ConfigureMapping(IApplicationBuilder app, IHostingEnvironment env){app.Map(/mapurl, HandleMapUrl);
}上例中是一个用Map方法来接受路径进入分支管道也就是说所有基于/mapurl路径请求都会被管道中的HandleMapUrl方法所处理如果想用谓词来进入中间件分支则要使用MapThen方法。MapThen方法允许以一种非常灵活的方式构建中间管道。比如可以检测查询字符串是否具有branch来进入分支private static void HandleBranch(IApplicationBuilder app){app.Run(async context { await context.Response.WriteAsync(Branch used.);});
} public void Configure(IApplicationBuilder app){app.MapWhen(context { return context.Request.Query.ContainsKey(branch);}, HandleBranch);}1.4 总结这节讲解了ASP.NET Core在运行时首先加载Program类下面的Main方法在Main方法中指定托管服务器并调用Startup类中的Configure和ConfigureServices方法等完成初始化在ASP.NET Core中 HTTP请求是以中间件管道的形式进行处理每个中间件都可以在HTTP请求开始和结束处理对它进行处理ASP.NET Core可以构建跨平台应用服务运行在Http.Sys仅适用于Windows平台和Kestrel上不需要用IIS进行托管所以相比传统ASP.NET来说性能更高效也更加灵活。相关文章 .NET Core 2.0 正式发布信息汇总.NET Standard 2.0 特性介绍和使用指南.NET Core 2.0 的dll实时更新、https、依赖包变更问题及解决.NET Core 2.0 特性介绍和使用指南Entity Framework Core 2.0 新特性体验 PHP under .NET Core.NET Core 2.0使用NLog升级项目到.NET Core 2.0在Linux上安装Docker并成功部署解决Visual Studio For Mac Restore失败的问题ASP.NET Core 2.0 特性介绍和使用指南.Net Core下通过Proxy 模式 使用 WCF.NET Core 2.0 开源Office组件 NPOIASP.NET Core - Razor页面之Handlers处理方法ASP.NET Core Razor页面 vs MVCRazor Page–Asp.Net Core 2.0新功能 Razor Page介绍ASP.Net Core 2.0中的Razor Page不是WebFormASP.NET Core Razor 视图组件Error Handling in ASP.NET CoreASP.NET Core中为指定类添加WebApi服务功能.Net Core 全局配置读取管理方法 ConfigurationManagerASP.NET Core Web服务器 Kestrel和Http.sys 特性详解asp.net core 2.0 web api基于JWT自定义策略授权体验 ASP.NET Core 中的多语言支持LocalizationASPNET Core 2.x中的Kestrel服务器asp.net core mvc View Component 应用.net core 使用Redis的发布订阅Configuration Extensions - 简化配置让你配置支持变量原文地址http://www.cnblogs.com/vipyoumay/p/7567573.html.NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注