当前位置:  开发笔记 > 后端 > 正文

如何使用SSRS中的自定义代码解决System.Security.SecurityException?

如何解决《如何使用SSRS中的自定义代码解决System.Security.SecurityException?》经验,为你挑选了2个好方法。

我已经在Reporting Services报告中创建了一个程序集并引用了它.我已经在本地(工作)测试了报告,然后我将报告上传到报告服务器(不起作用).

这是我编写的自定义代码引发的错误.

System.Security.SecurityException:对类型'System.Security.Permissions.SecurityPermission,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限的请求失败.at System.Security.CodeAccessSecurityEngine.CheckNReturnSO(PermissionToken permToken,CodeAccessPermission demand,StackCrawlMark&stackMark,Int32 unrestrictedOverride,Int32 create),位于System.Security.CodeAccessPermission.Assert()处的System.Security.CodeAccessSecurityEngine.Assert(CodeAccessPermission cap,StackCrawlMark和stackMark)处. [Snipped Method Name]在ReportExprHostImpl.CustomCodeProxy.[Snipped Method Name]失败的操作是:Demand失败的第一个权限的类型是:System.Security.Permissions.SecurityPermission失败的程序集区域是:

这个项目是我继承的,我对它并不熟悉.虽然我有代码(现在),所以我至少可以使用它:)

我相信失败的代码是这样的:

    Dim fio As System.Security.Permissions.FileIOPermission = New System.Security.Permissions.FileIOPermission(Security.Permissions.PermissionState.Unrestricted)
    fio.Assert()

但是,这种东西到处都是:

Private Declare Function CryptHashData Lib "advapi32.dll" (ByVal hhash As Integer, ByVal pbData As String, ByVal dwDataLen As Integer, ByVal dwFlags As Integer) As Integer

我可以看到其中任何一个都是Reporting Services无法开箱即用的东西.



1> 小智..:





在web.config中尝试这个



2> Ian Robinson..:

这就是我能够解决问题的方法:

强烈签署有问题的自定义程序集

修改rssrvpolicy.config文件以添加程序集的权限

                    
                        
                    

旁注:这是获取程序集的公钥blob的一种很好的方法, 用于获取签名程序集的公钥标记和blob.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有