2017-12-23 27 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フィールドエントリの場合は、これがエラーになります

関連する問題