System.Data.OleDB.OleDBExeption (0x80004005):尝试从 SharePoint 访问 .xlsx 文件时创建文件失败

System.Data.OleDB.OleDBExeption (0x80004005): Failure Creating File when trying to access .xlsx file from SharePoint

为了社区的利益,我在知道完整答案之前就问了这个问题。欢迎提出建议等

场景:

我正在为客户创建自动化测试。他们希望这些测试使用数据源,但希望它们由手动测试人员和 non-programming 工作人员在可能的情况下进行更新。我们找到的解决方案涉及在 SharePoint 网站上放置一个电子表格,其中的连接字符串在 app.config 中指定。该软件还确定 Microsoft 测试管理器中正在使用哪些测试设置(或者它是否在本地 debugged/run)并使用该信息来决定它需要哪个 sheets/rows。此解决方案在本地完美运行。

问题:

我们推送了一个新版本并将我们的测试用例与解决方案相关联。我试图 运行 来自 MTM 的测试。测试最初失败是因为测试代理没有安装 excel 或数据 driver 连接包。我解决了这个问题,并看到了您在标题中看到的内容:

"System.Data.OleDB.OleDBExeption (0x80004005): Failure Creating File"

这是一个荒谬的错误,因为 a) 我们从未创建 excel 文件,甚至没有写入文件 b) 我们在本地 运行ning 时从未遇到过此错误,并且测试代理具有相同的共享点权限。需要注意的是,Test Agent是VM 运行ning Server 2012.

这里有一些不对劲的线索:

我终于尝试了一些我应该早点尝试的东西。我将 app.config 中的连接字符串更改为本地文件位置(类似于 "C:/Folder/TestData.xlsx"),对新构建进行排队,从 SharePoint 下载测试数据,并将其放在测试代理的那个位置。结果是使用这个本地文件正确执行了测试。

如果有人知道此 AD 帐户如何成为 SharePoint 网站的所有者,但无法通过 Windows 资源管理器访问它,请在下面提供答案,您将获得一些 SO Karma。否则我会在解决问题后回复。

所以解决这个问题需要几个步骤:

  • 在测试代理 VM 上启用“Desktop Experience Feature”。
  • 这向 VM 添加了 "WebClient" 服务。我们将此服务自动设置为 运行。
  • 我们还继续在计算机上映射 SharePoint 驱动器。我不认为这是必要的。
  • THIS 文章中的疑难解答中提到了 WebClient 服务。我很沮丧,因为我没有检查这项服务,我不确定我为什么这样做。