1

Visual Web Developer 2010 Express を使用して小さな Web アプリケーションを作成しました。サイトをデプロイして最初のページ (アプリのユーザーのリストを提供するログイン ページ) に移動すると、次のエラーが発生します。

例外の詳細: System.Data.SqlClient.SqlException: ユーザーには、このアクションを実行する権限がありません。

ソース エラー:

Line 22:         public ActionResult LogOn()
Line 23:         {
Line 24:             var users = Membership.GetAllUsers().Cast<MembershipUser>().ToList();
Line 25:             SelectList usernames = new SelectList(users);
Line 26:             ViewBag.UserNames = usernames;

これが私のconnectionStrings設定です:

<connectionStrings>
   <add name="ApplicationServices"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
     providerName="System.Data.SqlClient" />
</connectionStrings>

なぜこのエラーが発生するのですか? どんな助けでも大歓迎です。現在、Windows 2008 Server で開発し、同じマシンで展開をテストしています。

4

1 に答える 1

1

接続文字列に問題が見つかりました。この Microsoftの記事によると、ユーザーのインスタンス化用にセットアップされました。

IIS 7.5 で実行され、SQL Server Express ユーザー インスタンスに依存する Web アプリケーションは、Windows 7 クライアントと Windows Server 2008 R2 の両方で既定の IIS 7.5 セキュリティ構成を使用して実行できません。

この記事では、本番環境でユーザー インスタンスを使用しないことも推奨しています。通常の .\SQLExpress インスタンスでデータベースをホストするのに役立つこの投稿を見つけました。接続文字列を次のように変更しました。

<connectionStrings>
    <add name="ApplicationServices"
     connectionString="Database="app_users";Data Source=.\SQLEXPRESS;Initial Catalog=app_users;Integrated Security=SSPI;"
     providerName="System.Data.SqlClient"/>
</connectionStrings>

上記の接続文字列を変更する前に、SQL Server Express の aspnetdb.mdf ファイルを、作成した "app_users" という新しいデータベースにアタッチしました。

権限エラーが発生しなくなりました。

于 2013-04-12T20:50:49.890 に答える