2011-12-12 3 views
2

보고서의 사용자 지정 코드로 작성된 함수에서 REST 서비스에 액세스하려고합니다. 이 코드를 별도의 어셈블리로 옮기고 싶지 않아 문제가 사용자 지정 코드 주위에 있으므로 사용자 지정 어셈블리로 보내지 마십시오.SSRS - 사용자 지정 코드

여기에 코드입니다 :

Public Shared Function GetData(ByVal id As String) As String 
    Dim strURL As String = ("http://..." & id) 
    Dim webRequest As System.Net.HttpWebRequest = DirectCast(System.Net.WebRequest.Create(strURL), System.Net.HttpWebRequest) 
     webRequest.Method = "Get" 
     Dim webResponse As System.Net.HttpWebResponse = DirectCast(webRequest.GetResponse, System.Net.HttpWebResponse) 
     Dim rdr As New System.IO.StreamReader(webResponse.GetResponseStream) 
     Return rdr.ReadToEnd 
End Function 

내가 사용하고 난 오류가 나타납니다

System.Security.SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) 
at System.Security.CodeAccessPermission.Demand() 
at System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint) 
at System.Net.HttpRequestCreator.Create(Uri Uri) 
at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) 
at System.Net.WebRequest.Create(String requestUriString) 
at ReportExprHostImpl.CustomCodeProxy.GetData(String what, String id, String defaultValue) 
The action that failed was: 
Demand 
The type of the first permission that failed was: 
System.Net.WebPermission 
The Zone of the assembly that failed was: 
MyComputer 

을 그리고 내가 너무 System.IO와 미래의 문제가있을 수 있다고 가정합니다.

나는 CAS를 한 번 보았고 나는 완전히 바뀌었고 어떤 정책 파일을 변경해야하는지, 어떤 코드 그룹을 변경해야하는지, 어떻게해야할지 모릅니다. 나의 이해는이 (rssrvpolicy.config에서) 사용자 지정 코드에 사용되는 코드 그룹이다 :

<CodeGroup 
    class="UnionCodeGroup" 
    version="1" 
    PermissionSetName="Execute" 
    Name="Report_Expressions_Default_Permissions" 
    Description="This code group grants default permissions for code in report expressions and Code element.> 

         <IMembershipCondition 
           class="StrongNameMembershipCondition" 
           version="1" 
           PublicKeyBlob="002400...CAEDDA2" 
         /> 
</CodeGroup> 

는 단순히 어떤 변화를하지 않는 완전 신뢰에 PermissionSetName 설정.

답변

0

코드 그룹에서 PermissionSetName = "FULLTRUST"를 시도해야합니다.

1

BIDS에서 보고서를 보려고 할 때이 예외가 발생하는 경우이 문제가 발생한 사람 (1 년 반 후)은 Visual Studio의 PrivateAssemblies에서 RSPreviewPolicy.config 파일을 업데이트해야합니다 예배 규칙서.

이와 같은 용도로 수정해야하는 보안 정책 파일이 세 가지 있습니다 (표현식 또는 사용자 지정 어셈블리의 사용자 지정 코드). 자세한 내용 (새 CodeGroup 요소를 배치 할 위치에 대한 중요성을 포함하여 !!)을 찾을 수 있습니다. MSDN 페이지에서 (오늘) "Using Reporting Services Security Policy Files"으로 제목이 지정되었습니다. 보안 구성 파일은 보고서 서버 구성 (rssrvpolicy.config), 보고서 관리자 구성 (rsmgrpolicy.config) 및 보고서 디자이너 구성 (RSPreviewPolicy.config)입니다.

위대한 테스트는 한 번에 하나씩 업데이트하고 각 업데이트 후 (보고서를 인스턴스의 보고서 서버 인스턴스에 배포 한 후) 세 번 모두를 테스트하는 것입니다.

관련 문제