ASP.NET Core 1.0 部署 HTTPS(.NET Core 1.0)
最近要做一个项目,正逢ASP.NetCore1.0版本的正式发布。由于现代互联网的安全要求,HTTPS加密通讯已成主流,所以就有了这个方案。
本方案启发于一个旧版的解决方案:
ASP.NETCore1.0部署HTTPS(.NETFramework4.5.1)
http://www.cnblogs.com/qin-nz/p/aspnetcore-using-https-on-dnx451.html?utm_source=tuicool&utm_medium=referral
在反复搜索官方文档并反复尝试以后得出以下解决方案
在project.json中,添加引用Microsoft.AspNetCore.Server.Kestrel.Https
{ "dependencies":{ //跨平台引用 //"Microsoft.NETCore.App":{ //"version":"1.0.0", //"type":"platform" //}, "Microsoft.AspNetCore.Diagnostics":"1.0.0", "Microsoft.AspNetCore.Mvc":"1.0.0", "Microsoft.AspNetCore.Razor.Tools":{ "version":"1.0.0-preview2-final", "type":"build" }, "Microsoft.AspNetCore.Server.IISIntegration":"1.0.0", "Microsoft.AspNetCore.Server.Kestrel":"1.0.0", "Microsoft.AspNetCore.Server.Kestrel.Https":"1.0.0", "Microsoft.AspNetCore.StaticFiles":"1.0.0", "Microsoft.Extensions.Configuration.EnvironmentVariables":"1.0.0", "Microsoft.Extensions.Configuration.Json":"1.0.0", "Microsoft.Extensions.Logging":"1.0.0", "Microsoft.Extensions.Logging.Console":"1.0.0", "Microsoft.Extensions.Logging.Debug":"1.0.0", "Microsoft.Extensions.Options.ConfigurationExtensions":"1.0.0", "Microsoft.VisualStudio.Web.BrowserLink.Loader":"14.0.0" }, "tools":{ "BundlerMinifier.Core":"2.0.238", "Microsoft.AspNetCore.Razor.Tools":"1.0.0-preview2-final", "Microsoft.AspNetCore.Server.IISIntegration.Tools":"1.0.0-preview2-final" }, "frameworks":{ //跨平台引用 //"netcoreapp1.0":{ //"imports":[ //"dotnet5.6", //"portable-net45+win8" //] //} //Windows平台通用化引用 "net452":{} }, "buildOptions":{ "emitEntryPoint":true, "preserveCompilationContext":true }, "runtimeOptions":{ "configProperties":{ "System.GC.Server":true } }, "publishOptions":{ "include":[ "wwwroot", "Views", "Areas/**/Views", "appsettings.json", "web.config" ], "exclude":[ "wwwroot/lib" ] }, "scripts":{ "prepublish":["bowerinstall","dotnetbundle"], "postpublish":["dotnetpublish-iis--publish-folder%publish:OutputPath%--framework%publish:FullTargetFramework%"] } }
在Program.cs中,增加HTTPS访问端口绑定
usingSystem; usingSystem.Collections.Generic; usingSystem.IO; usingSystem.Linq; usingSystem.Threading.Tasks; usingMicrosoft.AspNetCore.Hosting; namespaceDemo { publicclassProgram { publicstaticvoidMain(string[]args) { varhost=newWebHostBuilder() .UseKestrel() .UseUrls("http://*","https://*") .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); } } }
在Startup.cs文件中,启用HTTPS访问并配置证书路径及密码
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Threading.Tasks; usingMicrosoft.AspNetCore.Builder; usingMicrosoft.AspNetCore.Hosting; usingMicrosoft.Extensions.Configuration; usingMicrosoft.Extensions.DependencyInjection; usingMicrosoft.Extensions.Logging; usingSystem.IO; usingMicrosoft.AspNetCore.Http; namespaceDemo { publicclassStartup { publicStartup(IHostingEnvironmentenv) { varbuilder=newConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json",optional:true,reloadOnChange:true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json",optional:true) .AddEnvironmentVariables(); Configuration=builder.Build(); } publicIConfigurationRootConfiguration{get;} //Thismethodgetscalledbytheruntime.Usethismethodtoaddservicestothecontainer. publicvoidConfigureServices(IServiceCollectionservices) { //Addframeworkservices. services.AddMvc(); services.Configure<Microsoft.AspNetCore.Server.Kestrel.KestrelServerOptions>(option=>{ option.UseHttps(Path.Combine(newDirectoryInfo(Directory.GetCurrentDirectory()).FullName,"cret.pfx"),"pw"); }); } //Thismethodgetscalledbytheruntime.UsethismethodtoconfiguretheHTTPrequestpipeline. publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv,ILoggerFactoryloggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); if(env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseMvc(routes=> { routes.MapRoute( name:"default", template:"{controller=App}/{action=Index}/{id?}"); }); //https://docs.asp.net/en/latest/security/cors.html?highlight=https app.UseCors(builder=>builder.WithOrigins("https://*").AllowAnyHeader()); app.Run(run=> { returnrun.Response.WriteAsync("Test"); }); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。