0

ASP.NET MVCアプリケーションがあり、EntityFramework5.0を使用しています。また、ASP.NETメンバーシップ用のコードを提供する「CodeFirstMembershipProvider」Nugetパッケージもインストールしました。また、web.configにも変更を加えたと思います。

基本的に、私の問題は、アプリケーションがローカルSQL Serverインスタンスで正常に動作することですが、この接続文字列を使用してリモートDBを指定すると次のようになります。

    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=*******************, 14330;Integrated Security=False;Database=qrcodetr_database;Uid=qrcodetr_admin;Password=*********; Connect Timeout=15;Encrypt=False;Network Library=dbmssocn;Packet Size=4096" />

(パスワードとホスト名は編集済み)

この接続文字列の使用に失敗します。代わりにローカルSQLServerインスタンスを使用しようとし続けるため、ローカルで機能しますが、Webおよびデータベースホストで試行すると失敗します。これは、データベースでは実行できないローカルSQLServerインスタンスを使用しようとするためです。亭主。リモートデータベースホストはSQLServer2008R2を使用します。

なぜこれが起こるのか、またはこれを解決するために私が何ができるのか誰かが知っていますか?

web.config全体を投稿するつもりはありませんが、関連する可能性のあるいくつかの行を次に示します。

<add key="DatabaseInitializerForType TreasureHuntDB, QrCodeTreasureHunter" value="DataContextInitializer, QrCodeTreasureHunter"
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>
<membership defaultProvider="CodeFirstMembershipProvider">
  <providers>
    <add name="CodeFirstMembershipProvider" type="CodeFirstMembershipProvider" connectionStringName="DefaultConnection" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="CodeFirstRoleProvider">
  <providers>
    <clear />
    <add name="CodeFirstRoleProvider" type="CodeFirstRoleProvider" connectionStringName="DefaultConnection" />
  </providers>
</roleManager>
      <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

ちなみに、SQL Server 2008を介してリモートDBに正常に接続できるので、この問題は間違いなく私の側の構成の問題のようです。

ちなみに、「CreateDatabaseIfNotExists」に設定されているDataContextInitializerを使用しています。ホストされているデータベースでは、データベースを作成または削除する権限がないため、これに設定しました。そのため、ローカルで作成されたものの1つのバックアップを作成しました(SQL Server Expressで)。 )そして、復元機能を使用して、ホストされているデータベースにファイルを復元しました。だから私はデータベースを持っています、それは私のアプリケーションでは動作しません。

4

2 に答える 2

1

この質問と回答は、接続文字列セクションが次のようになることを示しています。

<connectionStrings>
    <clear /> <!--- need this to prevent using LocalSqlServer from machine.config or somewhere becouse it is not present when when publish to hosting -->
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="etc" />  
</connectionStrings>
于 2013-02-04T22:34:16.143 に答える
1

EFに接続文字列の名前を伝えていないように見えるので、慣例により接続文字列を作成しているだけです。名前をの形式でDbContextctorに渡すか、構成内"Name=DefaultConnection"の接続文字列の名前を変更して、その名前がDbContext派生クラスの名前と一致するようにすることができます。

于 2013-02-04T23:52:25.740 に答える