Я провожу несколько тестов для подготовки к следующей версии Chrome с изменениями в обработке файлов cookie SameSite, но мое веб-приложение создает проблемы. Я могу воспроизвести его следующим образом:
- Используйте Visual Studio 2019 (16.4.3) для создания нового проекта.
- Pick "ASP. NET Core Web Приложение »и включите https.
- Добавьте« Элемент лесов »и добавьте ASP. NET Core Identity.
При появлении запроса скомпонуйте все файлы и добавьте контекст данных и пользователя fre sh, используя SQLite:
Добавить services.AddRazorPages();
к загрузке
- Добавить
endpoints.MapRazorPages();
в UseEndpoints
конфигурацию лямбда Добавить SameSiteCookiesServiceCollectionExtensions
как , предложенный ThinkTecture , и используйте его, добавив services.ConfigureNonBreakingSameSiteCookies();
к своему автозагрузке. В качестве альтернативы просто пропустите часть анализа кода браузера (я думаю, что она не нужна), пропустите копирование связанного решения и вместо этого сделайте следующее:
services.Configure<CookiePolicyOptions>(options =>
{
options.MinimumSameSitePolicy = (Microsoft.AspNetCore.Http.SameSiteMode)(-1);
});
Добавьте app.UseCookiePolicy();
в Startup чтобы включить код
- Запустите приложение (для меня оно запускается в IIS Express на
https://localhost:44342/
) - Перейдите к
https://localhost:44342/Identity/Account/Login
Результат для меня:
Произошло необработанное исключение при обработке запроса.
InvalidOperationException: Нераспознанное значение SameSiteMode -1
Microsoft.AspNetCore.CookiePolicy. ResponseCookiesWrapper.ApplyPolicy (строковый ключ, параметры CookieOptions)
Полная трассировка стека, если это важно:
InvalidOperationException: Unrecognized SameSiteMode value -1
Microsoft.AspNetCore.CookiePolicy.ResponseCookiesWrapper.ApplyPolicy(string key, CookieOptions options)
Microsoft.AspNetCore.CookiePolicy.ResponseCookiesWrapper.ApplyAppendPolicy(ref string key, ref string value, CookieOptions options)
Microsoft.AspNetCore.CookiePolicy.ResponseCookiesWrapper.Append(string key, string value, CookieOptions options)
Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.AppendResponseCookie(HttpContext context, string key, string value, CookieOptions options)
Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.DeleteCookie(HttpContext context, string key, CookieOptions options)
Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.HandleSignOutAsync(AuthenticationProperties properties)
Microsoft.AspNetCore.Authentication.AuthenticationService.SignOutAsync(HttpContext context, string scheme, AuthenticationProperties properties)
AuthTest.Areas.Identity.Pages.Account.LoginModel.OnGetAsync(string returnUrl) in Login.cshtml.cs
+
await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory+NonGenericTaskHandlerMethod.Execute(object receiver, object[] arguments)
Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeHandlerMethodAsync()
Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeNextPageFilterAsync()
Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Rethrow(PageHandlerExecutedContext context)
Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeInnerFilterAsync()
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
Если я проверю dotnet --info
, я вижу:
Host Version: 3.1.1
- . NET Установлены основные SDK: целая куча, вплоть до
3.1.100
и 3.1.101
- Несколько
.NET Core runtimes installed
, включая Microsoft.AspNetCore.App
версии 3.1.0
и 3.1.1
Некоторые дополнительные сведения и попытки orkarounds:
- csproj содержит
<Project Sdk="Microsoft.NET.Sdk.Web">
, который должен (насколько я знаю) использовать самые последние доступные вещи - Я перезагрузил компьютер, чтобы убедиться, что нет временных проблем с задержкой
- один коллега с Windows машиной может воспроизвести проблему
- другой коллега с Linux Mint машиной не имеет проблему
- Я пробовал
dotnet nuget locals all --clear
, но это не помогло - Я вижу строку ошибки в источниках 3.0.0 , но не в источниках 3.1.0 (или мастер) из ASP NET Core
- Я пытался
dotnet new globaljson --sdk-version 3.1.101
заставить нужную версию, но она не работала (хотя я не уверен, что это правильно способ go об его использовании) - Я хочу попытаться удалить указанные c версии с моей машины, но у меня возникают проблемы с удалением вещей (кроме того факта, что версия Функции выбора должны сделать этот подход ненужным, верно?)
Так что я предполагаю Я нахожусь вариант this ASP. NET Core GitHub, проблема , в которой упоминается, что моя версия слишком мала? Но я не уверен, что делать дальше, так как чувствую, что уже все очистил.
Что мне здесь не хватает? Что мне нужно сделать, чтобы это исправить?