FormsAuthenticationに問題があります。何らかの理由で、ユーザーにロールを付与しようとすると、「ユーザー「X」が見つかりませんでした。」というエラーが表示されます。以前にユーザーに行を追加したばかりなので、このエラーは意味がありません。
次のコード
FormsAuthentication.SetAuthCookie(member.Id.ToString(), true);
Roles.AddUserToRole(member.Id.ToString(), "Admin");
エラーが発生します(member.Idは3です)
The user '3' was not found
編集:ユーザー名が実際にユーザー名である必要はありません。FormsAuthenticationでユーザーのユーザー名として設定したものと一致する必要があります。代わりにユーザーIDを使用する(文字列に変換する)のが一般的な方法です!しかし、この用量でも問題は変わらないので、ユーザーの名前は「3」です。
これは、ユーザーログイン時に行われます。
// Set roles
foreach(var r in Roles.GetRolesForUser(user.Id.ToString()))
Roles.RemoveUserFromRole(user.Id.ToString(), r);
IList<UserRole> roles = _usersServices.GetUserRoles((int)user.Id);
foreach (var userRole in roles)
{
if(userRole.Expires == null || userRole.Expires > DateTime.Now)
{
if(!Roles.RoleExists(userRole.Name))
Roles.CreateRole(userRole.Name);
Roles.AddUserToRole(user.Id.ToString(), userRole.Name);
}
}
解決策:問題は、web.configでroleManagerを設定するのを忘れていたため、userloginで値を入力しても、保存する場所がないことでした。