好的..花了3天时间研究这个问题,学到了很多,但还是无法完全解决它。
我有一个SSRS报告,引用了连接到SQL Server的外部程序集,在Visual Studio中预览此报告时,我会收到以下异常:
SecurityException:请求失败类型SqlClientPermission的权限
因此,我添加了以下代码:
new SqlClientPermission(PermissionState.Unrestricted).Assert();
但是这反过来会引起以下异常:
SecurityException: 请求的安全权限类型失败
失败的程序集区域为:MyComputer
根据我所读的,这个问题不应该在Visual Studio预览窗格中出现,因为代码应该在完全信任下运行?
尽管如此,我仍然按照此处的所有说明进行了操作,以使我的程序集获得完全信任。我尝试通过URL和强名称添加它。
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyNewCodeGroup">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\MyAssembly.dll"/>
</CodeGroup>
我也看到了这篇帖子,并尝试按照建议将我的代码组放在那里。
此外,我尝试签署我的程序集,并基于强名称添加了一个CodeGroup(也是在My_Computer_Zone中)。
我还尝试使用caspol.exe,命令如下:
caspol -af myassembly.dll
所以,我认为我的程序在完全信任下运行(虽然不是100%确定)。我无法理解为什么从Visual Studio预览窗格中仍然会出现这些权限错误。要能够断言SQL权限,我的代码需要什么? 更新: 我设置了一个本地的SSRS服务器实例。我可以在那里部署我的报告,并且它可以正常工作(因为我已经为它添加了完全信任),但是它仍然无法在VS中工作。这是一个临时的解决方法,但对于开发来说很糟糕,因为它需要长时间部署并占用大量内存...