4

我们使用 Web 角色在 Azure 云托管服务上托管了一个 asp.net 4.0 应用程序。我们正在使用 SQL Server CE 3.5 dll 并将一些数据插入.sdf文件。打开与 SQL Server CE.sdf文件的连接时收到以下错误消息。

无法加载与版本 8080 的 ADO.NET 提供程序对应的 SQL Server Compact 本机组件。请安装正确版本的 SQL Server Compact。有关详细信息,请参阅知识库文章 974247。

尝试过DbProviderFactories,web.config 中的运行时标签仍然存在相同的问题。并且还尝试了解决方案上的可部署依赖项选项以及本文建议的 SQL Server Compact 的私有安装。http://www.codeproject.com/Articles/33661/Creating-a-Private-Installation-for-SQL-Compact ,仍然存在问题。

如果我使用 SQL Server CE 4.0,它工作正常,它能够插入数据并返回.sdf文件。但是对于 SQL Server CE 3.5,它给出了上述错误,我们需要特别 3.5,因为我们将.sdf通过 Web 服务将此文件发送到移动应用程序。

如何在 Azure 云托管服务上使用 SQL Server CE 3.5?任何建议都受到高度赞赏。

谢谢和问候,哈里。

4

1 回答 1

1

它可能是环境问题 - 你能测试一下这两个语句的值吗:

string envVar = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");

Assembly entryAssembly = Assembly.GetEntryAssembly();
string str2 = (entryAssembly == null) ? string.Empty : Path.GetDirectoryName(entryAssembly.Location);

(这是来自 3.5 SP2 ADO.NET 提供程序的代码) - str2 应该是 Web 应用程序 bin 文件夹的路径 - envVar 应该是处理器架构(X86 或 AMD64)的文件夹名称

在 4.0 中,获取路径 (str2) 的逻辑得到了改进:

string localPath = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath;
Path.GetDirectoryName(localPath);

我认为逻辑在 4.0 中得到了改进,以更好地支持 Web 部署。换句话说:不支持使用 SQL Server Compact 3.5 SP2 进行私有 Web 部署。

选项:使用安装了 3.5 SP2 的主机,使用 4.0 并修改文件的版本头(没有尝试过,但可能是一个选项)参见http://erikej.blogspot.dk/2010/08/how-to -upgrade-version-3x-database-file.html

于 2013-03-28T07:33:44.510 回答