MSDN原文:连接
json
ASP.NET Core项目为开发人员提供了针对.NET Core,.NET Framework2种实现方式,根据官网通告NETCORE3.0后将取消对.NET Framework的支持。安全
NET Framework下使用服务器
在针对.NET Framework时,项目须要引用NuGet AspNetCore包。app
<ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" /> </ItemGroup>
明确包含文件不是他们被视为项目的一部分。这能够下降在处理大型团队时出现XML合并冲突的风险。框架
没有其余项目的基于GUID的引用,这提升了文件的可读性。网站
能够在不在Visual Studio中卸载文件的状况下编辑该文件 ui
ASP.NET Core引入了新的引导应用程序机制,ASP.NET 中入口点是Global.asax文件。路径配置和过滤器以及区域注册等任务在Global.asax文件中处理。this
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } }
此方法以干扰实现的方式将应用程序与其部署的服务器耦合在一块儿。为了解耦,OWIN被引入以提供一种更清晰的方式来一块儿使用多个框架。OWIN提供了一个管道,只添加所需的模块。托管环境采用Startup功能来配置服务和应用程序的请求管道。spa
使用ASP.NET Core 后,应用程序的入口点是Startup
,再也不依赖Global.asax。code
ASP.NET CORE +NET Framework 实现(这会配置您的默认路由,默认为Json上的XmlSerialization。根据须要将其余中间件添加到此管道(加载服务,配置设置,静态文件等):
using Owin; using System.Web.Http; namespace WebApi { // Note: By default all requests go through this OWIN pipeline. Alternatively you can turn this off by adding an appSetting owin:AutomaticAppStartup with value “false”. // With this turned off you can still have OWIN apps listening on specific routes by adding routes in global.asax file using MapOwinPath or MapOwinRoute extensions on RouteTable.Routes public class Startup { // Invoked once at startup to configure your application. public void Configuration(IAppBuilder builder) { HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute("Default", "{controller}/{customerID}", new { controller = "Customer", customerID = RouteParameter.Optional }); config.Formatters.XmlFormatter.UseXmlSerializer = true; config.Formatters.Remove(config.Formatters.JsonFormatter); // config.Formatters.JsonFormatter.UseDataContractJsonSerializer = true; builder.UseWebApi(config); } } }
ASP.NET CORE+Net Core实现中使用相似的方法,但不依赖于OWIN,相反,经过Program.cs Main
方法(相似于控制台应用程序)完成的,并经过Startup
加载。
using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; namespace WebApplication2 { public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); } }
Startup
必须包括一种Configure
方法。在Configure
,向管道添加必要的中间件。在如下示例中(来自默认网站模板),扩展方法配置管道,并支持:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseHsts(); } app.UseHttpsRedirection(); app.UseMvc(); }
Appliction和Host已经分离,这为迁移到不一样平台提供了灵活性。
ASP.NET支持存储配置。例如,这些设置用于支持部署应用程序的环境。一般的作法是将全部自定义键值对存储<appSettings>
在Web.config文件的部分中:
<appSettings> <add key="UserName" value="User" /> <add key="Password" value="Password" /> </appSettings>
ASP.NET 应用程序使用命名空间中的ConfigurationManager.AppSettings
集合读取这些设置System.Configuration
:
string userName = System.Web.Configuration.ConfigurationManager.AppSettings["UserName"]; string password = System.Web.Configuration.ConfigurationManager.AppSettings["Password"];
ASP.NET Core能够将应用程序的配置数据存储在任何文件中,并将其做为中间件引导的一部分加载。项目模板中使用的默认文件是appsettings.json:
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }, // Here is where you can supply custom configuration settings, Since it is is JSON, everything is represented as key: value pairs // Name of section is your choice "AppConfiguration": { "UserName": "UserName", "Password": "Password" } }
经过Startup.cs将appsettings.json文件加载到IConfiguration
应用程序内部的实例中 :
public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; }
读取Configuration
以获取设置
string userName = Configuration.GetSection("AppConfiguration")["UserName"]; string password = Configuration.GetSection("AppConfiguration")["Password"];
对于更深刻的参考ASP.NET Core配置,请查看 在ASP.NET核心配置。