提问人:bflow1 提问时间:7/20/2023 最后编辑:bflow1 更新时间:7/24/2023 访问量:286
在 Windows 服务器上设置具有 TLS 证书的 .Net 7 微服务
Setup a .Net 7 microservice with a TLS certificate, on a windows server
问:
我有一个 .net 7 mini web api 作为 Windows 服务(没有 IIS)运行,它在本地运行没有问题。当我部署到生产服务器时,出现以下错误:
我完成了在服务器上创建和添加 localhost x.509 证书的过程:
我的问题是,如何将此证书附加到 api。配置 api 的后续步骤应该是什么,或者我需要添加什么代码。我只使用 IIS 找到了答案,这不是这个项目的一个选项。感谢您的帮助。
这是我的 Program.cs 代码片段:
var webApplicationOptions = new WebApplicationOptions
{
Args = args,
ContentRootPath = WindowsServiceHelpers.IsWindowsService()
? AppContext.BaseDirectory
: default
};
var builder = WebApplication.CreateBuilder(webApplicationOptions);
builder.WebHost.ConfigureKestrel((context, serverOptions) =>
{
var kestrelSection = context.Configuration.GetSection("Kestrel");
serverOptions.Configure(kestrelSection);
});
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddCors();
builder.Services.AddHostedService<Worker>();
builder.Host
.UseWindowsService()
.UseSerilog((hostContext, logConfiguration) => logConfiguration.ReadFrom.Configuration(hostContext.Configuration))
.ConfigureServices((hostContext, services) =>
{
services.AddWindowsService();
services.AddHostedService<Worker>();
services.AddMediatR(typeof(Program).Assembly);
services.AddPersistenceServices(hostContext.Configuration);
services.Configure<RabbitMqConfiguration>(config => hostContext.Configuration.GetSection(nameof(RabbitMqConfiguration)).Bind(config));
});
var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
});
app.UseCors(p => p.WithOrigins("https://localhost:1234").AllowAnyHeader().AllowAnyMethod().AllowCredentials());
app.MapEndDebtorEndpoints();
app.Run();
下面是 appsettings.json 红隼设置。
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:4321"
},
"Https": {
"Url": "https://localhost:1234"
}
}
},
答: 暂无答案
评论