こんにちは。beaglesoftの真鍋です。
ASP.NET MVCは気に入っているのですが、初期設定では導入しなかったものを途中から追加する場合には手動で設定する必要が有ることが多いため内容を理解する必要が結構あります。
ASP.NET Identityでエラー
ASP.NET MVC5でASP.NET Identityを利用してログイン処理などを実行した時に次のようなエラーが発生しました。
owin.Environment 項目がコンテキストで見つかりませんでした。
このプロジェクトでは、もともと認証を利用しないプロジェクトとして作成後に、ASP.NET Identity
による認証を追加しました。そのため、なにか設定が正しくないだろうということは容易に想像がつきました。
原因について
原因はWeb.config
に設定されている内容が正しくなかったことでした。具体的には、以下の設定が行われていたためStartup.cs
ファイルが実行されていなかったためです。
<configuration> <appSettings> ... <add key="owin:AutomaticAppStartup" value="false" /> ... </appSettings> </configuration>
OWINに関する資料を確認すると、owin:AutomaticAppStartup
をfalse
に設定することでOWINの起動を向こうにすることになります。
To disable OWIN startup discovery add the appSetting owin:AutomaticAppStartup with a value of "false" in the web.config file.
また、規約としてOWINは[AssemblyName].Startup
を参照することになっているのですが、プロジェクト名が変更されたときに名前空間が一致していないなどトラブルが発生する予感が満載です。この辺も併せて設定を行いました。
<configuration> <appSettings> ... <add key="owin:appStartup" value="Beaglemap.Startup" /> <add key="owin:AutomaticAppStartup" value="true" /> ... </appSettings> </configuration>
"owin:appStartup
にOWINの起動時に読み込むファイルを指定することができます。今回は名前空間がBeaglemap
でクラス名がStartup
なのでBeaglemap.Startup
を指定しました。
参考にしたサイト
参考にしたサイトはやはりStackoverflowでこちらに記載のある内容から事象について調査を行いました。 [AssemblyName].Startup
また、具体的な設定については OWIN Startup Class Detection | The ASP.NET Site を確認しました。