2

私が取り組んできたプロジェクトで SQLCE を適用しました。Visual Studio では正常に動作し、ローカル (http://localhost:####) で実行すると完全に動作します。しかし、リモート ホストで公開すると、「Yellow Screen of Death」という次のエラー メッセージが表示されます。

登録された .Net Framework Data Provider の検索または読み込みに失敗しました。

私の Web.Config と参照は問題ありません (localhost で正常に動作すると述べたように)、変更する必要はありません。sdf ファイルが正しいパスに展開されます。

何が欠けている?

4

2 に答える 2

4

私は答えを見つけました。SQLCEがプロジェクトにインストールされると、Webアプリケーションのbinディレクトリの下にいくつかのファイルとフォルダーが追加されます。

次のファイルとフォルダーは、アプリと一緒にbinフォルダーにデプロイする必要があります。

Microsoft.Data.Entity.CTP.dll
System.Data.SqlServerCe.dll
System.Data.SqlServerCe.Entity.dll
WebActivator.dll
[x86](フォルダー)
[x86] \ sqlcecompact40.dll
[x86] \ sqlceer40EN.dll
[x86 ] \ sqlceme40.dll
[x86] \ sqlceqp40.dll
[x86] \ sqlcese40.dll
[amd64](フォルダー)
[amd64] \ sqlcecompact40.dll
[amd64] \ sqlceer40EN.dll
[amd64] \ sqlceme40.dll
[amd64] \ sqlceqp40.dll
[amd64] \ sqlcese40.dll

binフォルダーのルートにあるファイル(上記の最初の4つ)はデプロイされましたが、何らかの理由でx86フォルダーとamd64フォルダーが送信されませんでした。

これらのファイルをデプロイした後、アプリはリモートホストでも正常に機能しました。

于 2010-11-12T17:33:14.190 に答える
1

問題は、リモート ホストに SQLCEのプロバイダーがないためです。接続文字列を見ると、次のようになります。

<connectionStrings>      
  <add name="name" 
       connectionString="Data Source=|DataDirectory|yourDbFileName.sdf" 
       providerName="System.Data.SqlServerCe.4.0"/>      
</connectionStrings>

SQL CE とそのSystem.Data.SqlServerCe.4.0プロバイダーは .Net 4.0 の後にリリースされたため、標準の .Net Framework 4.0 には含まれていないことに注意してください。したがって、SqlServerCe.4.0 プロバイダーがありません

于 2010-11-12T15:54:37.453 に答える