를 해결하는 방법은 무엇입니까 시스템입니다.보안입니다.SecurityException 사용자 지정 코드에 SSRS?

StackOverflow https://stackoverflow.com/questions/32428

문제

내가 만든 어셈블리하고 참조에서 그것을 내 Reporting Services 보고서입니다.나는 테스트 보고서를 로컬로(작동),그리고 난 후에 업로드 된 보고서를 보고 서버(작동하지 않).

여기에 오류가 발생하여 사용자 지정 코드를 작성했습니다.

시스템입니다.보안입니다.SecurityException:의 권한을 요청 유형 '시스템이다.보안입니다.권한이 있습니다.SecurityPermission, mscorlib Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 지 못했습니다.에 시스템입니다.보안입니다.CodeAccessSecurityEngine.CheckNReturnSO(PermissionToken permToken,클래스가 올바르 수요,StackCrawlMark&stackMark, Int32unrestrictedOverride,Int32 성)에 시스템입니다.보안입니다.CodeAccessSecurityEngine.Assert(클래스가 올바르 모자,StackCrawlMark&stackMark)에 시스템입니다.보안입니다.클래스가 올바르게.Assert() 에서[냈다 메서드 이름이]에 ReportExprHostImpl.CustomCodeProxy.[냈다 메서드 이름을 작업하는지 못했었:수요 유형의 첫 번째 허가는 실패했:시스템입니다.보안입니다.권한이 있습니다.SecurityPermission 지역 어셈블리의 실패 었:MyComputer

이 프로젝트가 뭔가 나는 상속,그리고 나는 속속들이 잘 알고 있습니다.비록 나의 코드(지금),그래서 나는 적어도 그것으로 작업:)

내가 믿는 코드는 실패입니다:

    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 을 수용하지 않을 것입니다.

도움이 되었습니까?

해결책 2

이렇게 문제를 해결할 수있었습니다.

  • 문제의 맞춤 어셈블리에 강력하게 서명
  • 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을 가져 오는 좋은 방법입니다. 서명 된 어셈블리의 공개 키 토큰 및 blob을 얻기위한 VS 트릭 .

다른 팁

라코 디스

web.config에서 시도

관리자 모드에서 서비스 실행

라코 디스

저에게 솔루션은 rssrvpolicy.config의 위 줄을 "None"에서 "FullTrust"로 변경했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top