質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

650閲覧

ASP.NET Identityでテーブルを再生成しない方法

pomu.pomupomu

総合スコア18

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2018/07/03 07:05

現在、ASP.NETでフォーラムを作成している初学者です。質問の度、回答を戴きとても助かっています。ありがとうございます。

ASP.NET Identityのログインフォームに再ログインや新規ユーザー登録が出来なくなってしまったため質問投稿をしました。
該当のエラーメッセージに指示されているソースコードの場所、つまりASP.NET Identityで自動生成されたAccountController.csを見てもデータベースを作成する記述はないように思え、ならばどこでデータベースを再生成しようとしているのかわからず途方に暮れている状況です。
もしよろしければ、解決方法をご教授頂けないでしょうか、宜しくお願いします。

ASP.NET

発生している問題・エラーメッセージ

イメージ説明
(線の消してある部分はmdfファイルのパスです)

該当のソースコード

C#

1namespace Forum.Controllers 2{ 3 [Authorize] 4 public class AccountController : Controller 5 { 6 private ApplicationSignInManager _signInManager; 7 private ApplicationUserManager _userManager; 8 9 public AccountController() 10 { 11 } 12 13 public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager ) 14 { 15 UserManager = userManager; 16 SignInManager = signInManager; 17 } 18 19 public ApplicationSignInManager SignInManager 20 { 21 get 22 { 23 return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>(); 24 } 25 private set 26 { 27 _signInManager = value; 28 } 29 } 30 31 public ApplicationUserManager UserManager 32 { 33 get 34 { 35 return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); 36 } 37 private set 38 { 39 _userManager = value; 40 } 41 } 42 43 // 44 // GET: /Account/Login 45 [AllowAnonymous] 46 public ActionResult Login(string returnUrl) 47 { 48 ViewBag.ReturnUrl = returnUrl; 49 return View(); 50 } 51 52 // 53 // POST: /Account/Login 54 [HttpPost] 55 [AllowAnonymous] 56 [ValidateAntiForgeryToken] 57 public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 58 { 59 if (!ModelState.IsValid) 60 { 61 return View(model); 62 } 63 64 // これは、アカウント ロックアウトの基準となるログイン失敗回数を数えません。 65 // パスワード入力失敗回数に基づいてアカウントがロックアウトされるように設定するには、shouldLockout: true に変更してください。 66 var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false); 67 switch (result) 68 { 69 case SignInStatus.Success: 70 return RedirectToLocal(returnUrl); 71 case SignInStatus.LockedOut: 72 return View("Lockout"); 73 case SignInStatus.RequiresVerification: 74 return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); 75 case SignInStatus.Failure: 76 default: 77 ModelState.AddModelError("", "無効なログイン試行です。"); 78 return View(model); 79 } 80 } 81 82 // 83 // GET: /Account/VerifyCode 84 [AllowAnonymous] 85 public async Task<ActionResult> VerifyCode(string provider, string returnUrl, bool rememberMe) 86 { 87 // ユーザーがユーザー名/パスワードまたは外部ログイン経由でログイン済みであることが必要です。 88 if (!await SignInManager.HasBeenVerifiedAsync()) 89 { 90 return View("Error"); 91 } 92 return View(new VerifyCodeViewModel { Provider = provider, ReturnUrl = returnUrl, RememberMe = rememberMe }); 93 } 94 95 // 96 // POST: /Account/VerifyCode 97 [HttpPost] 98 [AllowAnonymous] 99 [ValidateAntiForgeryToken] 100 public async Task<ActionResult> VerifyCode(VerifyCodeViewModel model) 101 { 102 if (!ModelState.IsValid) 103 { 104 return View(model); 105 } 106 107 // 次のコードは、2 要素コードに対するブルート フォース攻撃を防ぎます。 108 // ユーザーが誤ったコードを入力した回数が指定の回数に達すると、ユーザー アカウントは 109 // 指定の時間が経過するまでロックアウトされます。 110 // アカウント ロックアウトの設定は IdentityConfig の中で構成できます。 111 var result = await SignInManager.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent: model.RememberMe, rememberBrowser: model.RememberBrowser); 112 switch (result) 113 { 114 case SignInStatus.Success: 115 return RedirectToLocal(model.ReturnUrl); 116 case SignInStatus.LockedOut: 117 return View("Lockout"); 118 case SignInStatus.Failure: 119 default: 120 ModelState.AddModelError("", "無効なコード。"); 121 return View(model); 122 } 123 } 124 125 // 126 // GET: /Account/Register 127 [AllowAnonymous] 128 public ActionResult Register() 129 { 130 return View(); 131 } 132 133 // 134 // POST: /Account/Register 135 [HttpPost] 136 [AllowAnonymous] 137 [ValidateAntiForgeryToken] 138 public async Task<ActionResult> Register(RegisterViewModel model) 139 { 140 if (ModelState.IsValid) 141 { 142 var user = new ApplicationUser { UserName = model.UserName, Email = model.Email }; 143 var result = await UserManager.CreateAsync(user, model.Password); 144 if (result.Succeeded) 145 { 146 await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); 147 148 // アカウント確認とパスワード リセットを有効にする方法の詳細については、https://go.microsoft.com/fwlink/?LinkID=320771 を参照してください 149 // このリンクを含む電子メールを送信します 150 // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); 151 // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); 152 // await UserManager.SendEmailAsync(user.Id, "アカウントの確認", "このリンクをクリックすることによってアカウントを確認してください <a href=\"" + callbackUrl + "\">こちら</a>"); 153 154 return RedirectToAction("Index", "Home"); 155 } 156 AddErrors(result); 157 } 158 159 // ここで問題が発生した場合はフォームを再表示します 160 return View(model); 161 } 162 163 // 164 // GET: /Account/ConfirmEmail 165 [AllowAnonymous] 166 public async Task<ActionResult> ConfirmEmail(string userId, string code) 167 { 168 if (userId == null || code == null) 169 { 170 return View("Error"); 171 } 172 var result = await UserManager.ConfirmEmailAsync(userId, code); 173 return View(result.Succeeded ? "ConfirmEmail" : "Error"); 174 } 175 176 } 177}

試したこと

ここに問題に対して試したことを記載してください。

使用環境等

Windows7
VS2017
ASP.NET MVC5
Net Framework 4.6.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/03 09:37

エラーメッセージは隠さないでもらえませんか。
退会済みユーザー

退会済みユーザー

2018/07/03 09:47 編集

それから、どういう操作をしたときにエラーとなるのか、できるだけ具体的にステップバイステップで手順を書いてください。その前に、質問者さんが何かをした結果エラーが出るようになったのではないかと想像していますが(何もしなければエラーは出るはずがない)、心当たりを書いてください。アップされたソースコードは Visual Studio が自動生成したものそのままではなく、何か手を加えたのですか?
pomu.pomupomu

2018/07/03 12:24

ファイルパスは隠すものなのかな?とばかり思っていました。すみません。identityについては手を加えたのではないか?と思い当たる節がなかったので、「仕様なのかな?」と思っていました。気がつかない間に手を加えてしまっているように返信を見て考えています。開発環境が自宅にはないので今すぐ追記はできないのですが、identityで自動生成されたままの見かけにログイン、ユーザー登録、ユーザー情報の修正、削除が同様のエラーが出てできないという状態です。遅くとも明日の正午までにはスクショ等を追加して詳細がよりわかるようにしようと思います。
退会済みユーザー

退会済みユーザー

2018/07/03 13:09

> ファイルパスは隠すものなのかな?とばかり思っていました。 ←インターネット上で公開しては不都合がある社外秘とか質問者さんの個人情報などでなければ隠す必要はないと思いますけど。
pomu.pomupomu

2018/07/04 02:49

すみません、自分の名前等を記しているわけではないのですが、所属名がパスに含まれているので今回は画すべきだったみたいです・・・。
guest

回答1

0

自己解決

web.config にあるデータベースの接続先を決める際にもしデータベースがなかった場合、どの様な名前を付けるかのプロパティがあるとおもうのですが、そこに使わないが既に存在しているデータベース名を記入していることが原因でした。

以下の例でいうと、
Initial Catalog=(データベース名);
の部分がほかのプロジェクトで用いているものになっていました。

<connectionStrings> <add name="(接続文字列名)" connectionString="Data Source=(※データソース指定);Initial Catalog=(データベース名);Integrated Security=True;" providerName="System.Data.SqlClient" /> </connectionStrings>

投稿2018/07/04 02:52

編集2018/07/09 04:47
pomu.pomupomu

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問