我使用Visual Studio模板创建了一个AzureAD认证的ASP.NET Core MVC应用程序。为了测试,我想在本地Docker示例中运行应用程序。
然而,在使用Visual Studio生成的Docker文件后,我得到以下错误:
Correlation failed.
DockerFile
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["MyApp/MyApp.csproj", "MyApp/"]
RUN dotnet restore "MyApp/MyApp.csproj"
COPY . .
WORKDIR "/src/MyApp"
RUN dotnet build "MyApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
端口绑定如下:
8080:80
我已经在AzureAD中设置了回调URL如下:
http://localhost:8080/signin-oidc
更新
我发现一些文章建议添加以下内容:
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
app.UseCookiePolicy();
但这会产生一个新的错误:
Exception: Unable to unprotect the message.State.
Unknown location
Exception: An error was encountered while handling the remote login.Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler<TOptions>.HandleRequestAsync()
1条答案
按热度按时间4xrmg8kj1#
我能够使用Docker为
ASP.NET Core MVC
应用程序运行Azure AD authentication
。在创建模板时,选择身份验证类型为
Microsoft Identity platform
。这使得可以从Visual Studio配置应用程序注册。无需手动创建和添加配置。
我在Docker文件中发现的唯一区别是。
谢谢@Jason Pan的评论。
是的,正如Jason Pan所提到的那样,尝试使用
https
而不是http。CookiePolicyOptions
).Program.cs
文件 *参考SO thread,它解决了旧版本中的相同类型的问题。