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