listItem.File.OpenBinary()无法正常工作 - SQL Server上没有启用Remote Blob Storage / FileStreaming的罪魁祸首?

时间:2011-07-11 02:41:10

标签: sharepoint sharepoint-2010

我正在将一个cmd行迁移实用程序从DEV移动到QA,我遇到了一个奇怪的错误。当然,事情在dev上完美运作。

这是令人讨厌的代码行:

byte[] fileBytes = sourceItem.File.OpenBinary();

“无法打开文件错误”。内部异常显示COM HResult代码为0x81070211

我确保我的帐户拥有我试图从中提取此文件的库的所有者权限。我甚至让自己成为一名农场管理员 - 但我仍然得到同样的错误。

我看到其他几个人遇到了同样的错误,但没有解决方案。一篇文章提到通过代码下载文件作为解决方法 - 它会是什么样子?

我也看到有些人将此问题与文件相关联> 100Kb并且可以通过将组件放入GAC来克服它。但是,这对于此应用程序来说会有问题。

是的,我也尝试过使用所有不同的选项参数。我还尝试了使用OpenBinaryStream打开Stream的解决方法,获取长度并将数据读入byte []数组。结果总是一样的。有些东西禁止我访问文件以便能够读取字节 - 而错误信息只是没用。

预先感谢您提供的任何帮助。

我现在认为该问题可能与远程Blob存储有关。一些帖子提到问题仅在文件大小> 1时才出现。 100KB。这恰好是文件从内容数据库移动到文件系统的限制。我相信DBA必须在SQL Server数据库上启用FileStreaming才能解决此问题。我正在等待我们的短期DBA采取行动这个建议。如果有效,我会跟进报告。与此同时 - 其他人是否有使用OpenBinary对RBS文件的经验?

Trey Carroll

3 个答案:

答案 0 :(得分:0)

这只是一个有根据的猜测 - 我没有时间来测试我的理论。图书馆需要结账吗?如果是这样,你在尝试打开它之前是否检查了文件?

答案 1 :(得分:0)

问题是由于StoragePoint造成的。运行OpenBinary()调用的帐户必须具有对StoragePoint数据库的显式访问权限。

答案 2 :(得分:0)

我也遇到了这个问题,发现这是由于CAS权限。

您可以通过在CAS权限中添加以下条目来解决问题

 <IPermission class="System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />