0

データに SQL サーバーを使用する MVC4 アプリケーションがあります。シンプルなメンバーシップ プロバイダーもあり、そのテーブルは同じデータベースに格納され、両方とも同じ接続文字列を使用します。

<connectionStrings><add name="bazaConnectionString" connectionString="DataSource=WINSERVER;Initial Catalog=baza;Persist Security Info=True;User ID=visualstudio;Password=xxx" providerName="System.Data.SqlClient" />

Visual Studio でアプリケーションをテストすると、すべて正常に動作しますが、プロジェクトを発行して IIS8 Web サーバー (SQL サーバーと同じコンピューター上) にアタッチすると、単純なメンバーシップが機能しません。

最初は接続文字列に問題があると思いましたが、それを使用するアプリケーションの他の機能は正常に動作します。しかし、ログインなどのメンバーシップを使用するものをクリックするとすぐに、エラーが発生します。

  • WinException 0x80004005 ファイルが見つかりません SqlException 0x80131904
  • ネットワーク関連またはインスタンス固有のエラー

誰かがこれを手伝ってくれますか? そうしないと、すべてのコントローラーに独自のユーザー認証ロジックを書き込む必要があると思います。

更新:いくつかのことを試した後、問題は [Authorize] 属性と、ビジュアル スタジオが生成する accountController にあるようです。ログインなどの WebSecurity メソッドを呼び出すと、他の場所で機能するためです。

4

1 に答える 1

0

最も可能性の高い理由は、アプリケーションが単純なメンバーシップ情報を格納するために別のデータベースを使用していることです。

マシンの app_Data フォルダーを参照し、そこに .mdf ファイルが作成されている場合は、別のデータベースを使用していることを確認してください。この問題は、asp.net アプリケーションが app_Data フォルダー内の localdb ファイルを検索してアタッチしようとしたが、見つからない場合に発生します。その場合は、単純なメンバーシップ プロバイダーを再構成して、指定された接続文字列を使用します。

さらに、db が指定されていない場合は常に localdb が作成されるため、ユーザーとロールの作成に asp.net 構成ツールを使用していないことも確認してください。

于 2013-03-25T12:41:34.547 に答える