Wou*_*Rij 4 c# asp.net-core-2.1
我正在使用 .NET Core 2.1 构建一个 mvc Web 应用程序。在 ListenOptions.UseHttps 下的 .net core 文档中,它声明它将使用默认证书配置 Kestrel(此处找到文档)。
Kestrel 在哪里寻找这个默认证书?如何替换它以进行登台(我想在其中使用我们的演示站点证书之一)?对于生产(我再次拥有不同的证书)?
我的 Program.cs 内容现在看起来像:
public class Program
{
public static void Main(string[] args)
{
var builder = WebHost.CreateDefaultBuilder(args); //This sets up Kestrel and adds appsettings.json to the configuration
builder.UseStartup<Startup>();
builder.ConfigureAppConfiguration((context, configurationBuilder) =>
{
var env = context.HostingEnvironment;
configurationBuilder.SetBasePath(env.ContentRootPath);
});
var host = builder.Build();
host.Run();
}
}
Run Code Online (Sandbox Code Playgroud)
我的 Startup.cs 配置方法
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseMvc(ConfigureRoutes);
}
Run Code Online (Sandbox Code Playgroud)
该应用程序在 localhost 上使用 https 运行良好。我在寻找一种方式通过配置来解决这个问题(如的appSettings。{} ENV上传.json?),而不是通过自定义方法,比如这一个
xneg提到的文档帮助解决了这个问题:Kestrel web server implementation in ASP.NET Core
通过如下修改 appsettings.DockerDevelopment.json 文件设法让它工作:
{
"Kestrel": {
"EndPoints": {
"HttpsDefaultCert": {
"Url": "https://*:443"
},
"Http": {
"Url": "http://*:80"
}
},
"Certificates": {
"Default": {
"Path": "certifcate.pfx",
"Password": "*********"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Kestrel 现在可以在 Docker 容器和临时服务器上使用 https 运行我的应用程序。
| 归档时间: |
|
| 查看次数: |
4210 次 |
| 最近记录: |