【问题标题】:FileIOPermission error in dll for report用于报告的 dll 中的 FileIOPermission 错误
【发布时间】:2012-10-10 08:58:10
【问题描述】:

我尝试了多种方法,这是我最新的方法,我尝试不触发错误但无济于事,我仍然收到 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

有没有人发现下面的代码有什么问题

【问题讨论】:

    标签: vb.net winforms visual-studio-2010 .net-4.0 report


    【解决方案1】:

    我找到了解决方案,当我找到解决方案时,这很有趣。 下面 1 行解决了无法从报告中访问文件的问题。

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

    【讨论】:

      【解决方案2】:

      使用PermissionSet

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

      您可以轻松地将C# 转换为VB.net

      【讨论】:

        猜你喜欢
        • 2015-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-24
        • 2012-05-05
        • 1970-01-01
        • 2015-10-04
        • 1970-01-01
        相关资源
        最近更新 更多