我正在尝试使用Apps Platform将. NET Core 6.0项目部署到数字海洋。但我一次又一次地遇到此异常:
未处理异常,系统操作无效异常:无法配置HTTPS终结点。未指定服务器证书,并且找不到默认开发人员证书或该证书已过期。
到目前为止,我已经尝试了很多方法和变体。针对此异常的其他解决方案建议在本地计算机上运行以下命令:
dotnet dev-certs https --clean
dotnet dev-certs https --trust
但由于这是部署到应用程序平台,我认为这些不会工作。我甚至尝试在Dockerfile中偷偷输入dotnet dev-certs https
命令,但发生了相同的异常。
以下是我目前所做的工作:
- 停靠文件:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["/Reservations.Api/Reservations.Api.csproj", "Reservations.Api/"]
COPY ["/Reservations.Application/Reservations.Application.csproj", "Reservations.Application/"]
COPY ["/Reservations.Persistance/Reservations.Persistance.csproj", "Reservations.Persistance/"]
COPY ["/Reservations.Security/Reservations.Security.csproj", "Reservations.Security/"]
COPY ["/Reservations.Domain/Reservations.Domain.csproj", "Reservations.Domain/"]
COPY ["/Reservations.UnitTests/Reservations.UnitTests.csproj", "Reservations.UnitTests/"]
RUN dotnet restore "Reservations.Api/Reservations.Api.csproj"
COPY . .
RUN dotnet build "Reservations.Api/Reservations.Api.csproj" -c Release -o /src/build
RUN dotnet dev-certs https
FROM build AS publish
RUN dotnet publish "Reservations.Api/Reservations.Api.csproj" -c Release -o /src/publish
FROM base AS final
WORKDIR /src
COPY --from=publish /src/publish .
EXPOSE 80
EXPOSE 443
ENV ASPNETCORE_URLS="https://+:80;https://+:443;"
ENTRYPOINT ["dotnet", "Reservations.Api.dll"]
- launchsettings.json
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:44641",
"sslPort": 44366
}
},
"profiles": {
"Reservations.Api": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "https://localhost:7202;http://localhost:5202",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
"publishAllPorts": true,
"useSSL": false,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "https://+:80;"
},
"httpPort": 8080,
"applicationUrl": "http://+:8080;"
}
}
}
- 在Program.cs中包含
app.UseHttpsRedirection();
。 - 部署日志错误:
[2023-03-01 15:39:53] warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
[2023-03-01 15:39:53] No XML encryptor configured. Key {8cbcf317-aff6-4a80-90fa-539eeaf0de94} may be persisted to storage in unencrypted form.
[2023-03-01 15:39:53] Unhandled exception. System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date.
[2023-03-01 15:39:53] To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'.
[2023-03-01 15:39:53] For more information on configuring HTTPS see https://go.microsoft.com/fwlin
我没有主意了,所以任何帮助都将不胜感激。
1条答案
按热度按时间2vuwiymt1#
我已经解决了这个问题,删除了任何类似HTTPS的地方,并将应用程序调整为只使用HTTP的流量。
在标记的行中,我从"https://+:80;",使其成为" http://+80;"。另外,我从Program.cs中删除了
app.UseHttpsRedirection();
。重点是:App Platforms将处理应用的HTTP安全性,这意味着您无需在应用内提供任何HTTPS配置。