読者です 読者をやめる 読者になる 読者になる

clock-up-blog

go-mi-tech

(ASP.NET MVC) 「Login failed for user '{your_username}'.」というエラー

ASP.NET Azure

まぁよくあるあるなエラーなのであるが一応記録を残しておく。
f:id:kobake:20160820155040p:plain:w600

見るべき情報はここ。

System.Data.SqlClient.SqlException: Login failed for user '{your_username}'.

 

エラーの原因

よくあるストーリーは以下のとおり。

Azure の SQLデータベースを使う場合、Azure 管理画面内で SQLデータベース インスタンスの「概要」から「データベース接続文字列の表示」を選ぶと、いわゆる Connection String 的な接続文字列が得られる。
f:id:kobake:20160820155521p:plain

ASP.NET MVC でこれを利用する場合、Web.config 内の <connectionStrings> セクション内にこの情報を張り付けることになる。せっかくだから伏字を入れずに今回は「そのまま」張り付けた例を載せる。

  ....
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Server=tcp:asptwitterdb.database.windows.net,1433;Initial Catalog=AspTwitterDb;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
         providerName="System.Data.SqlClient" />
  </connectionStrings>
  ....

connectionString があまりにも長いのでスルーしてしまいがちなのだが、Azure の管理画面からコピーしてきたこの接続文字列には「User ID={your_username};Password={your_password};」という部分が含まれており、お察しのとおり「{your_username}」「{your_password}」の部分は手書きで書き換える必要がある。

冒頭で紹介した「Login failed for user '{your_username}'.」のエラーは、この書き換えを怠った(忘れた)ために起こったエラーである。ことが多い。というかこれしかない気がする。

仮にデータベースのユーザ名が「hoge」、パスワードが「AbcXyz」であった場合、以下が正しい Web.config の設定となる。

  ....
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Server=tcp:asptwitterdb.database.windows.net,1433;Initial Catalog=AspTwitterDb;Persist Security Info=False;User ID=hoge;Password=AbcXyz;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
         providerName="System.Data.SqlClient" />
  </connectionStrings>
  ....

Web.config 以外の要因

Azure にデプロイするときのデータベース接続情報に「User ID={your_username};Password={your_password};」というモノが混ざっている可能性もある。

Properties/PublishProfiles/*.pubxml をチェックすると良い。

おわり

あまりにも凡ミスすぎるので記事にするまでもないような内容なのであるが
「Login failed for user '{your_username}'.」でググってもピンポイントな日本語情報が見つからない現状(2016年8月現在)なので、とりあえずメモ書きだけでも残しておく。

告知

ASP.NET MVC 関連のブログ記事は随時以下のサイトに移行していく予定です。

});