启用了NetFx40_LegacySecurityPolicy的System.Security.SecurityException

时间:2017-01-18 07:13:08

标签: c# .net epplus legacy securityexception

尝试创建一个简单的C#控制台应用程序,该应用程序与EPPlus excel读/写库以及我公司使用的另一个第三方供应商应用程序进行交互。

我面临的挑战是,其他第三方应用程序需要我的App.config文件才能支持旧版CAS策略模型,并且是访问其中一个关键程序集的先决条件。因此我的设置如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <runtime>
        <NetFx40_LegacySecurityPolicy enabled="true"/>
    </runtime>
</configuration>

当旧版安全策略设置为false时,我与EPPlus程序集交互的代码可以正常运行。当我将遗留支持策略更改为true时,我会立即获得以下异常抛出的异常:

Unhandled Exception: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark)
   at System.Security.CodeAccessPermission.Demand()
   at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
   at System.IO.FileSystemInfo.get_FullName()
   at OfficeOpenXml.ExcelPackage.ConstructNewFile(String password)
   at OfficeOpenXml.ExcelPackage..ctor(FileInfo newFile)
   at EPPlusApp.Program.Main(String[] args)

尝试手动设置目录的FileIOPermission&amp; excel文件我打算读/写,并花了半天时间通过论坛搜索确定解决方案,但无济于事。

任何人都意识到可以在保持旧版安全策略的同时使EPPlus程序集正常运行的潜在解决方法吗?

0 个答案:

没有答案