C# 获得;无法识别的SameSiteMode值-1“;ASP.NET Core 3.1 Web应用程序中的InvalidOperationException
我正在运行一些测试,为即将到来的Chrome版本做准备,对Cookie的SameSite处理进行了更改,但我的web应用程序遇到了麻烦。我可以用以下方式复制它:C# 获得;无法识别的SameSiteMode值-1“;ASP.NET Core 3.1 Web应用程序中的InvalidOperationException,c#,asp.net-core,samesite,C#,Asp.net Core,Samesite,我正在运行一些测试,为即将到来的Chrome版本做准备,对Cookie的SameSite处理进行了更改,但我的web应用程序遇到了麻烦。我可以用以下方式复制它: 使用Visual Studio 2019(16.4.3)创建新项目 选择“ASP.NET核心Web应用程序”并启用https 添加“脚手架项目”并添加ASP.NET核心标识 当被询问时,使用SQLite为所有文件搭建脚手架,并添加新的数据上下文和用户: 添加services.AddRazorPages()启动 添加endpoints.
services.AddRazorPages()代码>启动
endpoints.MapRazorPages()编码>进入UseEndpoints
配置lambda
SameSiteCookiesServiceCollectionExtensions添加为,并通过添加服务来使用它代码>到您的启动。或者,只需省略浏览器嗅探部分(我认为此复制不需要),跳过复制链接解决方案,而是执行以下操作:
services.Configure<CookiePolicyOptions>(options =>
{
options.MinimumSameSitePolicy = (Microsoft.AspNetCore.Http.SameSiteMode)(-1);
});
如果我选中dotnet--info
我会看到:
主机版本:3.1.1
- 已安装.NET核心SDK:一整套,最多包括
3.1.100
和3.1.101
- 安装了多个
.NET Core运行时
,包括Microsoft.AspNetCore.App
版本3.1.0
和3.1.1
一些其他详细信息和尝试的解决方法:
- csproj包含
,据我所知,它应该使用最新的可用材料
- 我已经重新启动,以确保没有暂时的问题挥之不去
- 一个使用Windows机器的同事可以重现这个问题
- 另一位同事使用LinuxMint机器,没有这个问题
- 我试过
dotnet-nuget-all-clear
,但没用
- 我可以看到错误行,但看不到ASP NET内核的错误行(或主错误行)
- 我尝试了
dotnet new globaljson--sdk version 3.1.101
来强制使用正确的版本,但没有成功(尽管我不确定使用它是否正确)
- 我想尝试从我的机器上删除特定的版本,但是我(除了版本选择功能会使这种方法变得不必要之外,对吗?)
所以我想我面临的是一个变体,它提到我的版本太低了?但我不知道现在该怎么办,因为我觉得我已经把一切都搞清了
我错过了什么?我需要做些什么来修复此问题?如果您不注意并在Visual Studio对话框中选择3.0.x来创建应用程序,就会出现这种情况。如果选择正确的(3.1.x),您将获得:
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
netcoreapp3.1
在您的.csproj
文件中,以及几个软件包的3.1.x
版本中
不确定Linux为什么没有这个问题,可能只是因为这些机器碰巧没有3.0.x版本的dotnet core可用或安装,并且它在3.1上运行您的代码,从而掩盖了问题?已经尝试了许多可能性。
但解决办法是:
您必须安装此。ASP.NET核心运行时2.1.17是否有一个可以覆盖sdk版本的global.json
?另外,您是在本地还是在部署后收到错误?由于前滚,最新的运行时也需要安装在目标系统上。或者部署为自包含的应用程序(其中包括并排的runtime@Tseng这是在localhost上的,这是一台完全更新的Windows 10 1909机器,它似乎有最新的.NET核心SDK,我假设使用完全更新的Visual Studio创建一个新项目也会使用最新的NuGet软件包。我不知道是否有global.json
,但会检查。-我确实看到生成的项目文件使用了
,它没有明确的版本号,因此可能是罪魁祸首…隐式版本是2.1以来的推荐方法。它将为您的目标查找已安装的版本(netcore2.1
/netcore2.2
/netcore3.0
/netcore3.1
)选择最新安装的运行时/(旧版本的文档:)我认为Visual Studio 201916.4.3
中存在一些错误。更新到16.4.3
之后,我所有使用Cookie
的web应用程序都面临问题。我推测另一个(Linux)机器无法在需要时找到3.0运行时,使用3.1运行时运行3.0应用程序,因此“隐藏”了实际问题。