StructureMap、IIS 7.5和FileIOException

StructureMap、IIS 7.5和FileIOException,iis,structuremap,.net-3.5,Iis,Structuremap,.net 3.5,大家好。我正在试图解决一个显然并不罕见的问题,我不知道如何找到解决这一问题的方法。当我通过IIS在我的机器上运行StructureMap时,我得到一个异常,如下所示: **Description**: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please conta

大家好。我正在试图解决一个显然并不罕见的问题,我不知道如何找到解决这一问题的方法。当我通过IIS在我的机器上运行StructureMap时,我得到一个异常,如下所示:

**Description**: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
**Exception Details**: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
这个问题是在SO()上提出来的,并且

我的问题是没有在外国托管环境中运行它。我甚至不能让它在我自己的机器上运行(IIS 7.5、Win7 RC、.NET 3.5)。我已尝试将站点配置为使用自定义策略文件,并且FileIOPermission被标记为具有不受限制的访问权限…无骰子。如果任何人有一些提示或链接,将不胜感激

更新
因此,这并不是解决问题的最佳方法,但在深入研究约书亚提到的内容之后,我必须做以下几件事才能让它正常工作:。如果有更好的解决方案,我们将不胜感激。

这是一个bug,已在主干中修复。它将包含在2.6+版本中。 StructureMap的一些早期版本会尝试不必要地将动态程序集写入磁盘,或者不必要地尝试从文件系统读取


如果您在不允许访问文件系统(ASP.NET)中的完整路径的受限环境中运行,请确保在配置容器时设置IgnoreDefaultFile=true。请记住,这将禁用从StructureMap.config加载XML配置的功能。

值得一提的是,我遇到了同样的问题,我完全控制了该框,甚至将所有权限设置为完全信任。在IIS 7.5中,我必须将用于特定应用程序池的标识更改为NetworkService,而不是ApplicationPoolIdentity。一旦我重新启动了IIS,它就工作了。

使用正式的StructureMap 2.5.4在Windows 7上构建IIS 7.5,我仍然遇到这个问题。 马洛奇的变化

  ObjectFactory.Initialize(x =>
    {
      x.UseDefaultStructureMapConfigFile = false;
      x.IgnoreStructureMapConfig = true;

必须解决
FileIOPermission
异常,但我随后收到
类型为'System.Web.AspNetHostingPermission,System,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'的权限请求。失败。
我使用Mike的解决方案解决了该问题(我为其创建了一个解决方案)。

,我使用的是StructureMap v2.6.1,遇到了这个问题

我不使用XML配置,所以我在配置代码中添加了以下代码行,解决了这个问题

IgnoreStructureMapConfig = true;

我使用的是2.5.3版。我不是从源代码构建它的。正如公认的答案中所指出的,处理这个问题的方法是在StructureMap中更改代码。不需要更改IIS配置。