MVC 4 アプリケーションを作成しました。そのアプリケーションでは
ユーザーがパスワードを忘れた場合、ユーザーにメールを送信してパスワードをリセットする方法があります。
管理者がユーザーの現在のパスワードを変更したい場合、関連する詳細を記載したメールをユーザーに送信する方法があります。
そのため、メールを送信しようとすると同じエラーが発生します
次のようなエラーが発生します
- パスワードを忘れた場合のエラー
- Edit User メソッドで発生するエラー
メールを送信しようとすると問題が発生するようです。asp.net ID メンバーシップを使用しています。
これは、パスワードを忘れた場合の方法に関連するコード スニペットです。
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model)
{
if(ModelState.IsValid)
{
var username = await UserManager.FindByNameAsync(model.UserName);
var user = await UserManager.FindByEmailAsync(model.Email);
if (user != null && username != null)
{
var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("My_Application");
UserManager.UserTokenProvider = new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider<ApplicationUser>(provider.Create("EmailConfirmation"));
var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(
........
これは、ユーザー メソッドの編集に関連するコード スニペットです。
[HttpPost]
[CustomAuthorization(IdentityRoles = "Admin")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit_User(EditUserViewModel editUser)
{
try
{
if (ModelState.IsValid)
{
AspNetUser user = db.AspNetUsers.Find(editUser.Id);
if(editUser.Change == "Yes"){
String userId = editUser.Id;
String newPassword = editUser.NewPassword;
var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("My_Application");
UserManager.UserTokenProvider = new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider<ApplicationUser>(provider.Create("EmailConfirmation"));
var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(
................................................
同じ場所に問題があるようですが、まだわかりません