我在一个我一直在工作的项目中应用了 SQLCE。它在 Visual Studio 中运行良好,当我在本地运行时 (http://localhost:####) 运行完美。但是当我在远程主机上发布它时,我收到“黄屏死机”以下错误消息:
未能找到或加载已注册的 .Net Framework 数据提供程序。
我的 Web.Config 和引用都可以(正如我所说的它在 localhost 上工作正常)没有必要对其进行修改。sdf 文件部署在正确的路径中。
什么不见了?
我在一个我一直在工作的项目中应用了 SQLCE。它在 Visual Studio 中运行良好,当我在本地运行时 (http://localhost:####) 运行完美。但是当我在远程主机上发布它时,我收到“黄屏死机”以下错误消息:
未能找到或加载已注册的 .Net Framework 数据提供程序。
我的 Web.Config 和引用都可以(正如我所说的它在 localhost 上工作正常)没有必要对其进行修改。sdf 文件部署在正确的路径中。
什么不见了?
我找到了答案。当 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 文件夹。
在我部署这些文件后,该应用程序在远程主机中也能正常工作。
问题是因为您的远程主机没有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 提供程序