我正在将一个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
答案 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" />