我有一个SSRS报告,引用连接到SQL Server的外部程序集,在Visual Studio中预览此报告时,我得到以下异常:
SecurityException:请求SqlClientPermission类型的权限失败
所以,我添加了这段代码:
new SqlClientPermission(PermissionState.Unrestricted).Assert();
但这会导致此例外:
SecurityException:请求SecurityPermission类型的权限失败
失败的程序集区域是:MyComputer
根据我的阅读,在Visual Studio预览窗格中不应出现此问题,因为代码应该完全信任?
从来没有,我继续前进followed all of the instructions here,以便让我的集会充分信任。我尝试通过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>
我也看到this post,并尝试将我的代码组放在那里建议的位置。
此外,我尝试签署我的程序集,并添加基于强名称的CodeGroup(也在My_Computer_Zone中。
我也尝试过使用caspol.exe:
caspol -af myassembly.dll
所以,我认为myassembly完全信任(虽然不是100%肯定)。 我无法弄清楚为什么,我仍然从Visual Studio预览窗格中获得这些权限错误。
我的代码究竟需要什么才能断言sql权限?
更新
我设置了SSRS服务器的本地实例。我可以在那里部署我的报告,并且它可以工作(因为我已经为它添加了完全信任),但它仍然无法在VS中工作。这是一个临时的工作,但它很难开发,因为它需要很长时间才能部署并吃掉大量的ram ..
答案 0 :(得分:2)
我必须在RsPreviewPolicy.config中进行两处更改(在开发计算机上):
<CodeGroup
class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="Report_Expressions_Default_Permissions"
Description="This code group grants default permissions for code in report expressions and Code element. ">
</CodeGroup>
<CodeGroup
class="FirstMatchCodeGroup"
version="1"
PermissionSetName="FullTrust"
Description="This code group grants MyComputer code Execution permission. ">
<IMembershipCondition
class="ZoneMembershipCondition"
version="1"
Zone="MyComputer" />
</CodeGroup>
我希望这有助于某人。
答案 1 :(得分:1)
声波,
这为我解决了这个问题,但我猜你的问题可能还有其他问题
C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ PrivateAssemblies \ RSPreviewPolicy.config
[或者 C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PrivateAssemblies \ RSPreviewPolicy.config]
<CodeGroup
class="FirstMatchCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name=" my CustomAssemblyCodeGroup"
Description="A special code group for my Report custom assembly.">
<IMembershipCondition
class="UrlMembershipCondition"
version="1"
Url="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\my.ReportUtils.dll"/>
</CodeGroup>
网址值最初设置为错误的文件夹
Url =“C:\ Program Files \ Microsoft SQL Server \ MSRS11.SQLSERVER2012 \ Reporting Services \ ReportServer \ bin \ my.ReportUtils.resources.dll”/&gt;
而不是包含RSPreviewPolicy.config文件和dll
的文件夹即使两个位置都有相同的dll,也无法正常工作
我真的很傻
利安