Ошибка SignInAsync идентификатора Asp.Net на стороне сервера: заголовки ответа не могут быть изменены - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь заставить работать учетную запись Asp.Net Identity через Blazor в шаблонном приложении Visual Studio, она по-прежнему использует Razor Pages и MVC для входа, но может заставить его работать только с событием OnInitAsync, котороебесполезно, потому что это нужно делать нажатием кнопки, а не при загрузке страницы.

Мой код ошибки:

protected async Task LoginTest()
{
   await _SignInManager.SignInAsync(new ApplicationUser()
   { UserName = "test@test.com" }, true);
   UriHelper.NavigateTo("/", true);
}

Я получаю сообщение об ошибке:

System.InvalidOperationException: The response headers cannot be modified because the response has already started.
at Microsoft.AspNetCore.HttpSys.Internal.HeaderCollection.ThrowIfReadOnly()
at Microsoft.AspNetCore.HttpSys.Internal.HeaderCollection.set_Item(String key, StringValues value)
at Microsoft.AspNetCore.Http.Internal.ResponseCookies.Append(String key, String value, CookieOptions options)
at Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.AppendResponseCookie(HttpContext context, String key, String value, CookieOptions options)
at Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.HandleSignInAsync(ClaimsPrincipal user, AuthenticationProperties properties)
at Microsoft.AspNetCore.Authentication.AuthenticationService.SignInAsync(HttpContext context, String scheme, ClaimsPrincipal principal, AuthenticationProperties properties)
at Microsoft.AspNetCore.Identity.SignInManager`1.SignInWithClaimsAsync(TUser user, AuthenticationProperties authenticationProperties, IEnumerable`1 additionalClaims)
at WebApplication3.Pages.Account.Login.RegUser() in C:\Users\david\source\repos\WebApplication3\WebApplication3\Pages\Account\Login.razor:line 28
at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(Task task)
at Microsoft.AspNetCore.Components.Rendering.Renderer.GetErrorHandledTask(Task taskToHandle)

Кто-нибудь имел успех в том, чтобы заставить это работать?Как я уже упоминал, я могу заставить его работать, если поместить вышеописанную функцию в метод OnInitAsync, но это бесполезно делать там.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

Не могли бы вы предоставить несколько примеров кода того, как вы реализовали свое решение? Я потратил около 5 часов на решение этой проблемы и не смог ее решить.

0 голосов
/ 11 июля 2019

Я нашел эту связанную проблему GitHub http://github.com/aspnet/AspNetCore/issues/11411

Я закончил тем, что создал обходное решение, использующее подход post-redirect-get. В этом посте я зашифровал токен входа в систему с данными пользователя и передал его на другую страницу в качестве получения с токеном в строке запроса, затем прочитал зашифрованный токен и авторизовал пользователя.

...