尝试创建一个简单的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程序集正常运行的潜在解决方法吗?