1

私はSQLServerの担当者ではありませんが、クライアントのアプリケーションに取り組んでおり、最初にEFコードを介してデータベースに接続したいと考えています。

私が持っている例外メッセージは

基になるプロバイダーを開くことができませんでした

例外の詳細

ログインで要求されたデータベース[DatabaseName]を開くことができません。ログインに失敗しました

ユーザー'IISAPPPOOL \ASP.NETv4.0"のログインに失敗しました

私のウェブ設定

<add name="TraininGoDB"
    providerName="System.Data.SqlClient"
    connectionString="Server=LOCALPCNAME\SQLEXPRESS;Database=[DATABASENAME];Integrated Security=True;"/>

EFコンテキストとエンティティは、次のアプリ構成を使用して別のプロジェクトで定義されます

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

SQL ServerExpress2008を使用しています

データベース構成またはWeb構成から問題がわからない

4

2 に答える 2

1

(Webアプリケーションに関連付けられている)Webアプリケーションプールが実行されているユーザーには、データベースにアクセスするためのアクセス許可がありません。アクセス許可を付与するか、アクセス許可を持つ別のユーザーの下で実行する必要があります。つまり、要約すると、アプリケーションプールが実行されているユーザーを確認してから、そのユーザーがデータベースにアクセスできることを確認します。

于 2012-06-05T12:32:00.280 に答える
0

すべてのWeb.configファイルが正しい場合、SQLSERVERに適切なアクセス許可がある場合など、もう1つ確認できます。クライアントがプロジェクトを構成して、Entity Frameworkがデータベースを自動的に削除しないようにしたときにこの問題が発生したことがあります(たとえば、モデルが変更された場合)が、ローカルホストでプロジェクトをテストしていました。したがって、新しいデータベースを作成する必要がありましたが、コンテキストファイルを修正するのを忘れていました。たとえば、私の問題は次のとおりです。

public MasterContext(string nameOrConnectionString) : base(nameOrConnectionString)
    {
        Database.SetInitializer<MasterContext>(null);
    }

(テストの目的で)あるべきだったとき:

public MasterContext(string nameOrConnectionString) : base(nameOrConnectionString)
    {
        Database.SetInitializer<MasterContext>(new DropCreateDatabaseIfModelChanges<MasterContext>());

    }

そうしないと、基になるプロバイダーがオープンに失敗したのと同じエラーが発生しますが、内部の例外はユーザーのログインに失敗したことです。

于 2015-10-06T16:13:38.963 に答える