【问题标题】:Using SQL Server CE 3.5 on Azure Cloud Service Hosting using web role在使用 Web 角色的 Azure 云服务托管上使用 SQL Server CE 3.5
【发布时间】:2013-03-28 17:53:33
【问题描述】:

我们使用 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,因为我们将通过 Web 服务将此 .sdf 文件发送到移动应用程序。

如何在 Azure 云托管服务上使用 SQL Server CE 3.5?任何建议都非常感谢。

感谢和问候, 哈里。

【问题讨论】:

  • 你在erikej.blogspot.dk/2012/05/…这里遵循我的指导了吗?
  • 是的.. 试过了.. 这些 dll 在 amx64 和 x86 的 bin 文件夹中可用.. 发布后 ce 4.0 dll 与手动复制的 3.5 dll 一起自动添加到 bin 文件夹中..除了实体框架 dll,因为我们没有使用它们......仍然是同样的问题......该过程适用于 4.0 而不是 3.5 dll......
  • 您使用的是 Entity Framework 4 还是 5。那不行。
  • 不,我们没有使用实体框架。
  • 你引用的程序集版本是 3.5.1.50 吗?

标签: sql azure sql-server-ce windows-ce


【解决方案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

【讨论】:

  • str2 值为空。角色根目录是 F:\。 Approot 目录是 F:\sitesroot\。当我使用本地存储时,存储路径是 C:\Resources\directory\1481e60ba17e4462a598da5af1476fd1.EnTrack.EnTrackHHT\.
  • 本地路径值为 E:\sitesroot\0\bin\EnTrack.DLL,目录名称值为 E:\sitesroot\0\bin
  • 3.5还有其他选择吗?或者如果我们使用 sql ce 4.0 是否支持 windows mobile 或 ce 版本?
  • No 4.0 在 Windows Mobile/CE 上不受支持。更新答案
  • 如果我们手动复制 bin 文件夹中的 3.5 dll,它在 azure 云环境中工作正常。感谢大家对艾瑞克的支持。赞赏..
猜你喜欢
  • 2013-08-23
  • 2010-12-21
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 2010-10-14
  • 2013-11-22
相关资源
最近更新 更多