2

我在一个我一直在工作的项目中应用了 SQLCE。它在 Visual Studio 中运行良好,当我在本地运行时 (http://localhost:####) 运行完美。但是当我在远程主机上发布它时,我收到“黄屏死机”以下错误消息:

未能找到或加载已注册的 .Net Framework 数据提供程序。

我的 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]\sqlceme40.dll
[x86]\sqlcese40.dll
[amd64](文件夹)
[amd64]\sqlcecompact40.dll
[amd64]\sqlceer40EN.dll
[amd64]\sqlceme40.dll
[amd64]\ sqlceqp40.dll
[amd64]\sqlcese40.dll

bin 文件夹根目录中的文件(我上面提到的前四个)已部署,但由于某种原因未发送 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 回答