Я получаю следующее сообщение, когда пытаюсь запустить свой сервис в Linux Невозможно настроить конечную точку HTTPS. Сертификат сервера не указан
Мой WebAPI был создан на C# в dotnet 8.0, но когда я публикую его в Linux и пытаюсь запустить службу dll, я получил сообщение
fail: Microsoft.Extensions.Hosting.Internal.Host[11]
Hosting failed to start
System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and
To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS o
For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.
at Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(ListenOptions listenOptions, Action`1 con
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.AddressesStrategy.BindAsync(AddressBindConte
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindAsync(ListenOptions[] listenOptions, Add
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 applicati
at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__15_1(IHostedService service, CancellationToken tok
at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token
Мое приложение не настроено для использования докера или чего-то подобного, это просто простой веб-приложение, опубликованное непосредственно на компьютере с Linux.
Мой сервер NGINX настроен с использованием SSL и сертификата, а другие API-интерфейсы работают нормально (все используют более старую платформу dotnet), серверный компьютер использует Linux Cent OS 7.
Я не знаю, пропустил ли я что-то в appsettings.json или что-то, что мне нужно сначала сделать в своей среде разработки, прежде чем публиковать на моем сервере.
Я пытаюсь найти здесь другие ответы, но нахожу только что-то, связанное со средой разработки, моя машина отлично работает с https только на стороне сервера, и я не могу запустить приложение.
🤔 А знаете ли вы, что...
С C# можно разрабатывать веб-приложения с использованием ASP.NET и ASP.NET Core.
Попробуйте настроить Kestrel в файле конфигурации приложения. По примеру добавить раздел:
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5000"
},
"Https": {
"Url": "https://0.0.0.0:5001"
}
},
"Certificates":{
"Default":{
"Path":"./cert.pfx",
"Password":""
}
}
}
Если нужен только http, удалите раздел https и раздел сертификатов. Но, я думаю, это сработает только в том случае, если пустельга не настроена самым жестким образом в коде. Также обратите внимание на статью https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel/endpoints?view=aspnetcore-8.0#configure-endpoints-in-appsettingsjson