0

を投げている、次のコードの最後の行のAddToRoleAsync呼び出しがエラー投げている:私はいずれかを持っていないので、これが奇数の一種であるThe COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.をSQL Serverまたは他の場所で実行されている他のトランザクション私は一般的にこのT-SQLエラーを認識しています。しかし、私はなぜAddToRoleAsync呼び出しがこのエラーを投げているのかはっきりしない。次のコード行でエラーが発生する前に、次のコードでユーザーを作成できたことに注意してください。AddToRoleAsyncは私のASP.NET MVCコア1.1アプリでは、奇妙なSQLエラー

List<String> usersList = GetAllUsers(); 

foreach (string s in usersList) 
{ 
    var user = new ApplicationUser { UserName = s, UserRole = "TestRole" }; 
    var result = await _userManager.CreateAsync(user, "testpassword"); 

    if (result.Succeeded) 
    { 
     var result_1 = await _userManager.AddToRoleAsync(user, "TestRole"); 
    } 
} 
+0

に属していますか?私は同じことを経験しています。興味深いのは、Azureのデプロイメントでこのエラーが発生していることです。ローカルの開発環境でエラーは発生しません。 – ih303

+0

@ ih303プロジェクトを閉じて再起動した後、正常に復帰した場合、動作を開始しました。 – nam

答えて

0

マイクロソフトでは、.Netコアアプリケーションを使用する場合、[AspNetRoles]などの構造を変更しました。今度は[AspNetRoles]に新しいロールステートメントを追加するときにロールNormalizedNameも宣言する必要があります。例えば :大文字にNormalizedName役割変数を設定する

var role = "Manager"; 

var newRole = new IdentityRole() 
{ 
    Name = role, 
    NormalizedName = role.ToUpper() // Mandatory. 
}; 

//! Adding the new Role into database and saving 
await _apiDbContext.Roles.AddAsync(newRole); 
await _apiDbContext.SaveChangesAsync(); 

、あなたが使用できるようになります:AddToRoleAsync任意の奇妙なERRSなし。

var currentUser = await _userManager.FindByEmailAsync(user.Email); 
await _userManager.AddToRoleAsync(currentUser, "Manager"); 

_userManagerはあなたがこれを理解しましたUserManager<YourIdentityUser>

関連する問題