13

我创建了一个程序集并在我的 Reporting Services 报告中引用了它。我在本地测试了报告(有效),然后将报告上传到报告服务器(无效)。

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

System.Security.SecurityException:请求“System.Security.Permissions.SecurityPermission,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。在 System.Security.CodeAccessSecurityEngine.CheckNReturnSO(PermissionToken permToken, CodeAccessPermission demand, StackCrawlMark& stackMark, Int32 unrestrictedOverride, Int32 create) 在 System.Security.CodeAccessSecurityEngine.Assert(CodeAccessPermission cap, StackCrawlMark& stackMark) 在 System.Security.CodeAccessPermission.Assert() 在[Snipped Method Name] at 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 无法开箱即用的东西。

4

4 回答 4

18
<system.web>

<trust level="Full"/>

</system.web>

在 web.config 中试试这个

于 2011-04-01T17:03:22.593 回答
8

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

  • 强烈签署有问题的自定义程序集
  • 修改 rssrvpolicy.config 文件为程序集添加权限

                        <CodeGroup
                            class="UnionCodeGroup"
                            version="1"
                            PermissionSetName="FullTrust"
                            Name="Test"
                            Description="This code group grants the Test code full trust. ">
                            <IMembershipCondition
                                    class="StrongNameMembershipCondition"
                                    version="1"
                                    PublicKeyBlob="0024000004800000940100000602000000240000575341310004000001000100ab4b135615ca6dfd586aa0c5807b3e07fa7a02b3f376c131e0442607de792a346e64710e82c833b42c672680732f16193ba90b2819a77fa22ac6d41559724b9c253358614c270c651fad5afe9a0f8cbd1e5e79f35e0f04cb3e3b020162ac86f633cf0d205263280e3400d1a5b5781bf6bd12f97917dcdde3c8d03ee61ccba2c0"
                                />
                        </CodeGroup>
    

旁注:这是获取程序集的公钥 blob VS 获取签名程序集的公钥令牌和 blob 的技巧的好方法。

于 2008-09-01T02:16:49.710 回答
0

以管理员模式运行您的服务

于 2015-04-28T12:08:43.373 回答
0
 <CodeGroup class="FirstMatchCodeGroup" version="1" PermissionSetName="FullTrust">

rssrvpolicy.config对我来说,解决方案是更改from "None"to中的上述行"FullTrust"

于 2019-02-22T15:26:41.083 回答