当启动部署到灵活的应用程序时,它会失败,太多307次重定向。它在VS中在本地成功运行。
开发和计算堆栈包括:
我使用VS模板创建了一个项目(天气预报)。
dotnet dev-certs https -v -ep /Users/QQQQQQQ/Projects/CostZzzzzzzzzz/xxxxx.Orchestration.Cost/Certificate/dev-certificate.pfx -p ufo(我随后将其移至项目的根)
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
EXPOSE 8080
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY Xxxxx.Orchestration.Cost/Xxxxx.Orchestration.Cost.csproj Xxxxx.Orchestration.Cost/
RUN dotnet restore "Xxxxx.Orchestration.Cost/Xxxxx.Orchestration.Cost.csproj"
COPY . .
WORKDIR "/src/Xxxxx.Orchestration.Cost"
RUN dotnet build "Xxxxx.Orchestration.Cost.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Xxxxx.Orchestration.Cost.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENV ASPNETCORE_ENVIRONMENT=Development
ENV ASPNETCORE_URLS=http://*:8080;https://*:443
ENV ASPNETCORE_HTTPS_PORT=443
ENV ASPNETCORE_Kestrel__Certificates__Default__Path=Xxxxx.Orchestration.Cost/dev-certificate.pfx
ENV ASPNETCORE_Kestrel__Certificates__Default__Password=ufo
ENTRYPOINT ["dotnet", "Xxxxx.Orchestration.Cost.dll"] runtime: custom
env: flex
# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
network:
name: default
subnetwork_name: default-us-east1
service: get-cost
env_variables:
# The __ in My__Greeting will be translated to a : by ASP.NET.
My__Greeting: Hello AppEngine Flex! public class Program
{
public static void Main(string[] args)
{
//CreateHostBuilder(args).Build().Run();
CreateWebHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
// //options.Listen(IPAddress.Loopback, 5000); // http:localhost:5000
options.Listen(IPAddress.Any, 8080); // http:*:80
options.Listen(IPAddress.Any, 443, listenOptions =>
{
listenOptions.UseHttps("dev-certificate.pfx", "ufo");
});
})
.UseStartup<Startup>();
}此解决方案是描述如何通过Docker创建.NET核心应用程序并将其部署到GAE的几篇文章的合并。
错误日志的主要消息是: XXX.YYY.ZZZ.AAA - "GET /“307未定义的"Mozilla/5.0 (Macintosh;Intel 10_14_6) AppleWebKit/537.36 (KHTML,类似壁虎) Chrome/78.0.3904.108 Safari/537.36”
我正在寻找有关如何正确配置应用程序以便它将在GAE中正确运行的帮助。
PS:通过删除Dockerfile中的ENV指令,码头容器将在我的mac上本地运行。然而,我无法在GAE上运行它。
发布于 2019-12-11 03:34:14
事实证明,一旦我理解了真正的问题是什么,这个解决方案就非常简单,部分原因在于对较新的.net核心版本(如3.x、GAE和Docker都是新的)来说,这些问题都是非常新的。
无论如何,删除app.UseHttpsRedirection();在Startup.cs类的配置方法中解决了眼前的问题。本文解释了这个问题:https://learn.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-3.1&tabs=visual-studio
实际上,GAE Flex已经在端口8080上提供重定向,因此代码中的附加重定向指令会导致HTTP 307结果的无穷无尽的重定向。
https://stackoverflow.com/questions/59110808
复制相似问题