C# 获得;无法识别的SameSiteMode值-1“;ASP.NET Core 3.1 Web应用程序中的InvalidOperationException

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.

我正在运行一些测试,为即将到来的Chrome版本做准备,对Cookie的SameSite处理进行了更改,但我的web应用程序遇到了麻烦。我可以用以下方式复制它:

  • 使用Visual Studio 2019(16.4.3)创建新项目
  • 选择“ASP.NET核心Web应用程序”并启用https
  • 添加“脚手架项目”并添加ASP.NET核心标识
  • 当被询问时,使用SQLite为所有文件搭建脚手架,并添加新的数据上下文和用户:

  • 添加
    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 2019
    16.4.3
    中存在一些错误。更新到
    16.4.3
    之后,我所有使用
    Cookie
    的web应用程序都面临问题。我推测另一个(Linux)机器无法在需要时找到3.0运行时,使用3.1运行时运行3.0应用程序,因此“隐藏”了实际问题。