私は ASP.Net MVC を試してきましたが、特に MVC に関連していない問題に遭遇しました。しかし、デフォルトの MVC アプリケーション (新しい MVC プロジェクトを作成するときにウィザードによって作成されるアプリケーション) で認証を取得できず、Windows 7 上の IIS 7 で正しく機能しません。
Visual Studio 環境で実行すると動作しますが、代わりに IIS で実行するように設定を切り替えると、ログインまたは登録を送信しようとして次の例外が発生します。
ユーザーのローカル アプリケーション データ パスの取得に失敗したため、SQL Server のユーザー インスタンスを生成できませんでした。ユーザーがコンピューター上にローカル ユーザー プロファイルを持っていることを確認してください。接続が閉じられます。
これは、Web サイトが Visual Studio では自分のアカウントで実行されているのに、IIS では IUSR アカウントで実行されているためだと思います。例外メッセージに関する Google 検索は、これまでのところ役に立ちませんでした。
では、IUSR アカウントのローカル ユーザー プロファイルを作成できますか? もしそうなら、どのように?IIS 7 の匿名アカウントで SQLExpress エンジンを動作させるために他にすべきことはありますか?
私のアカウントを使用するように IIS Web サイトを構成しようとしましたが、これは私のホーム マシンであるため、私のアカウントにはパスワードがありません。または、これが IIS 7 の初めての経験であり、構成が IIS 5/6 とは大きく異なるため、匿名アクセスに使用するアカウントを構成できる適切な設定が欠けているだけです。
編集:いくつかの追加情報。App_Data フォルダーを空にして IIS から再試行すると、SQLExpress はデータベースの作成を試みて失敗しますが、例外メッセージには次の提案を含む詳細情報が含まれています。
SQLExpress データベース ファイルの自動作成 エラー:
接続文字列は、アプリケーションの App_Data ディレクトリ内のデータベースの場所を使用して、ローカルの Sql Server Express インスタンスを指定します。プロバイダーは、データベースが存在しないと判断したため、アプリケーション サービス データベースを自動的に作成しようとしました。アプリケーション サービス データベースの存在を正常に確認し、アプリケーション サービス データベースを自動的に作成するには、次の構成要件が必要です。
- アプリケーションの App_Data ディレクトリがまだ存在しない場合、Web サーバー アカウントには、アプリケーション ディレクトリへの読み取りおよび書き込みアクセス権が必要です。App_Data ディレクトリがまだ存在しない場合、Web サーバー アカウントによって自動的に作成されるため、これが必要です。
- アプリケーションの App_Data ディレクトリが既に存在する場合、Web サーバー アカウントには、アプリケーションの App_Data ディレクトリへの読み取りおよび書き込みアクセスのみが必要です。これが必要なのは、Web サーバー アカウントが Sql Server Express データベースがアプリケーションの App_Data ディレクトリ内に既に存在することを確認しようとするためです。Web サーバー アカウントから App_Data ディレクトリへの読み取りアクセスを取り消すと、プロバイダーは Sql Server Express データベースが既に存在するかどうかを正しく判断できなくなります。これにより、プロバイダーが既存のデータベースの複製を作成しようとすると、エラーが発生します。新しいデータベースの作成時に Web サーバー アカウントの資格情報が使用されるため、書き込みアクセスが必要です。
- Sql Server Express がマシンにインストールされている必要があります。
- Web サーバー アカウントのプロセス ID には、ローカル ユーザー プロファイルが必要です。マシン アカウントとドメイン アカウントの両方のローカル ユーザー プロファイルを作成する方法の詳細については、readme ドキュメントを参照してください。
最初の 3 つの提案が満たされていることをかなり広範囲に確認しました。4番目が私の問題の原因のようですが、その方法がわかりません。提案には、それを説明する readme ドキュメントがあると書かれていますが、私はそのドキュメントを見つけることができませんでした。