时间:2021-07-01 10:21:17 帮助过:24人阅读
最近要做一个项目,正逢ASP.Net Core 1.0版本的正式发布。由于现代互联网的安全要求,HTTPS加密通讯已成主流,所以就有了这个方案。
本方案启发于一个旧版的解决方案:
ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.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": [ "bower install", "dotnet bundle" ],
- "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
- }
- }
在Program.cs中,增加HTTPS访问端口绑定
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Hosting;
- namespace Demo
- {
- public class Program
- {
- public static void Main(string[] args)
- {
- var host = new WebHostBuilder()
- .UseKestrel()
- .UseUrls("http://*", "https://*")
- .UseContentRoot(Directory.GetCurrentDirectory())
- .UseIISIntegration()
- .UseStartup<Startup>()
- .Build();
- host.Run();
- }
- }
- }
在 Startup.cs 文件中,启用HTTPS访问并配置证书路径及密码
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Builder;
- using Microsoft.AspNetCore.Hosting;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Logging;
- using System.IO;
- using Microsoft.AspNetCore.Http;
- namespace Demo
- {
- public class Startup
- {
- public Startup(IHostingEnvironment env)
- {
- var builder = new ConfigurationBuilder()
- .SetBasePath(env.ContentRootPath)
- .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
- .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
- .AddEnvironmentVariables();
- Configuration = builder.Build();
- }
- public IConfigurationRoot Configuration { get; }
- // This method gets called by the runtime. Use this method to add services to the container.
- public void ConfigureServices(IServiceCollection services)
- {
- // Add framework services.
- services.AddMvc();
- services.Configure<Microsoft.AspNetCore.Server.Kestrel.KestrelServerOptions>(option => {
- option.UseHttps(Path.Combine(new DirectoryInfo(Directory.GetCurrentDirectory()).FullName, "cret.pfx"), "pw");
- });
- }
- // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
- public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
- {
- 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 =>
- {
- return run.Response.WriteAsync("Test");
- });
- }
- }
- }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。