【问题标题】:Request for the permission of type 'System.Security.Permissions.FileIOPermission failed请求“System.Security.Permissions.FileIOPermission”类型的权限失败
【发布时间】:2018-04-23 09:28:04
【问题描述】:

我正在为 Microsoft IIS 编写 HTTPModule。作为初始化回调函数的一部分,它从磁盘读取配置文件。这在我们的一个开发环境中运行良好,但在新创建的环境中,我们收到以下错误:

“/”应用程序中的服务器错误。
安全异常
说明:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。

来源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
System.Security.CodeAccessPermission.Demand() +55
System.Configuration.ConfigurationFileMap.GetFilenameFromMachineConfigFilePath() +77
System.Configuration.ClientConfigurationHost.OpenExeConfiguration(ConfigurationFileMap fileMap, Boolean isMachine, ConfigurationUserLevel userLevel, String exePath) +44
System.Configuration.ConfigurationManager.OpenExeConfigurationImpl(ConfigurationFileMap fileMap, Boolean isMachine, ConfigurationUserLevel userLevel, String exePath, Boolean preLoad) +112
System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(ExeConfigurationFileMap fileMap, ConfigurationUserLevel userLevel) +50
abc..ctor() in C:\repos\myrepo\src\a\Configuration\MyConfig.cs:40
def..ctor() in C:\repos\myrepo\src\a\MyModule.cs:48

引发错误的代码如下所示

string config_path =  ConfigurationManager.AppSettings["configPath"];
log.Debug("Config path: " + config_path);
ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
configMap.ExeConfigFilename = config_path;
System.Configuration.Configuration config =
ConfigurationManager.OpenMappedExeConfiguration(configMap, 
ConfigurationUserLevel.None);

两台服务器上的信任级别都设置为“完全”,我们已经尝试了对文件的各种文件权限组合,那么可能是什么原因造成的?

【问题讨论】:

    标签: .net iis-8 windows-server-2016


    【解决方案1】:

    我们发现了问题。在 Windows 中构建文件后,我们将它们放在一个 zip 文件中。将文件添加到 zip 时,会为解压缩文件夹后保留的所有文件添加阻止属性。这些可以在解压缩文件后通过右键单击文件,选择属性,然后单击底部的取消阻止按钮来删除。这是更多信息的链接

    https://blogs.msdn.microsoft.com/delay/p/unblockingdownloadedfile/

    为了防止在 Windows 中出现这种阻塞属性,可以查看以下 stackoverflow 线程:

    https://superuser.com/questions/302146/can-i-stop-windows-from-blocking-zip-files

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多