0

私はさまざまな方法を試しましたが、これはエラーを発生させないようにした最新の方法ですが、役に立たず、FileIOPermissionエラーが発生します。

完全なエラーは

タイプ'System.Security.Permissions.FileIOPermission、mscorlib、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'のアクセス許可の要求に失敗しました

私が使用しているコードは以下のとおりです

    Dim permissions As New Security.PermissionSet(Security.Permissions.PermissionState.None)
    permissions.AddPermission(New Security.Permissions.FileIOPermission(Security.Permissions.PermissionState.Unrestricted))
    permissions.AddPermission(New Security.Permissions.SecurityPermission(Security.Permissions.SecurityPermissionFlag.Execution))
    permissions.AddPermission(New Security.Permissions.SecurityPermission(Security.Permissions.SecurityPermissionFlag.Assertion))
    permissions.Assert()
    ReportViewer1.LocalReport.SetBasePermissionsForSandboxAppDomain(permissions)

    Dim asm As Reflection.Assembly = Reflection.Assembly.Load("ReportingServiceUtils, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cca1b177d76f2036")
    Dim asm_name As Reflection.AssemblyName = asm.GetName()
    ReportViewer1.LocalReport.AddFullTrustModuleInSandboxAppDomain(New Security.Policy.StrongName(New Security.Permissions.StrongNamePublicKeyBlob(asm_name.GetPublicKeyToken()), asm_name.Name, asm_name.Version))

dllで使用されているコードは以下のとおりです

Public Sub Add(ByVal group As String, ByVal groupCurrentPageNumber As String)
    Try
        If _GroupWithRunningMaxPageNumber.ContainsKey(group) Then
            _GroupWithRunningMaxPageNumber(group) = groupCurrentPageNumber
        Else
            If _GroupWithRunningMaxPageNumber.Count = 0 Then
                Dim fileName = "C:\Working Folder\ms-dot-net-report-viewer-group-pagenation\ReportingServiceUtils\test.xml"
                sw = New System.IO.StreamWriter(fileName, False)
                sw.WriteLine("<root>")
                sw.WriteLine("</root>")
                sw.Close()
                sw.Dispose()
            End If
            _GroupWithRunningMaxPageNumber.Add(group, groupCurrentPageNumber)
            sw.WriteLine("<Group  current='" & group & "' lastPage='" & CStr(groupCurrentPageNumber) & "'/>", 1, 1)
            sw.Close()
        End If
    Catch ex As Exception
        Throw ex
    End Try
End Sub

誰かが以下のコードに何か問題があると思いますか

4

2 に答える 2

0

私は解決策を見つけました、そして私がしたときそれはかなり面白かったです。以下の1ライナーは、レポートからファイルにアクセスできないという問題を解決します。

Dim auth As New System.Security.Permissions.FileIOPermission( System.Security.Permissions.PermissionState.Unrestricted)

于 2012-10-15T09:00:01.050 に答える
0

使用するPermissionSet

      var sec = new System.Security.PermissionSet(System.Security.Permissions.PermissionState.Unrestricted);

      ReportViewer1.LocalReport.SetBasePermissionsForSandboxAppDomain(sec);

C#からVB.net簡単に変換できます

于 2015-11-13T08:18:03.913 に答える