Ошибка SignInAsync идентификатора Asp.Net на стороне сервера: заголовки ответа не могут быть изменены

Я пытаюсь заставить работать учетную запись 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, но делать это там нехорошо.

Любая помощь будет высоко ценится.

0
задан David Hawkins 26 June 2019 в 22:42
поделиться