2017-12-23 60 views
0

내가마다 자동으로 새로 등록 된 사용자에게 역할을 할당 할 accountController을 수 있도록 노력했다 존재하지 않는, 그래서 나는이 같은 일을 결국했습니다InvalidOperationException이 : 역할 testRole는

public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null) 
     { 

      if (ModelState.IsValid) 
      { 
       var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; 
       var result = await _userManager.CreateAsync(user, model.Password); 
       //there is where the error is being raised. 
       await _userManager.AddToRoleAsync(user, "testRole"); 

       if (result.Succeeded) 
       { 
       //here goes some code 
       //have also adding this line of code inside this if stmt 
       //await _userManager.AddToRoleAsync(user, "testRole"); 
       } 
       AddErrors(result); 
      } 
      return View(model); 
     } 

내가 한 무엇의 다른 글 StackOverFlow 권장하지만이 오류가 계속 : InvalidOperationException : 역할 TESTROLE 존재하지 않습니다.

Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore+d__34.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) Microsoft.AspNetCore.Identity.UserManager+d__104.MoveNext() System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) System.Runtime.CompilerServices.TaskAwaiter.GetResult() WebApplication2.Controllers.AccountController+d__17.MoveNext() in AccountController.cs

주 :

  • 내 프로젝트에 PostgreSQL을 사용하던, 그래서 MSSQL과 함께 새로운 프로젝트 을 생성하고 같은 오류와 함께 종료했습니다.
  • 나는 TestRole이 AspNetRoles 테이블에 있는지 확인했습니다. 그래서, 그것도 아무런 문제가 없습니다!
+2

TestRole이 AspNetRoles 테이블에 있습니까? – mvermef

+0

PostgreSQL으로 돌아 가기로 결정했다면 거기에서도 작동합니다. – mvermef

+0

고마워요. 제 프로젝트에서 작동했습니다. 나는 표준화 된 것이 거래 차단기라는 것을 알아 차리지 못했다! 다시 고마워! – NewProgrammer

답변

2

그래서 testRole은 TESTROLE로 정규화 될 정확한 이름입니다. TestRole은 어떻게 생성 되었습니까? Identity는 정규화 된 버전을 찾습니다. 예외는이 경우에는 존재하지 않는다는 것을 분명합니다. 기본적으로 RoleManager를 사용하지 않은 경우 역할을 만든 방식에 이상이 있습니다.

역할을 만드는 또 다른 방법은 데이터베이스 컨텍스트를 사용하고 새 역할을 그런 방식으로 추가하지만 대문자를 사용하지 않은 경우입니다. NormalizedName 필드 항목의 경우이 오류가 발생합니다.