보고서의 사용자 지정 코드로 작성된 함수에서 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 설정.