代码之家  ›  专栏  ›  技术社区  ›  Mallioch

结构映射、IIS 7.5和FileIOException

  •  5
  • Mallioch  · 技术社区  · 15 年前

    大家好。我试图解决一个问题,这显然不是罕见的,我不知道如何找到这是解决问题的人。当我通过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.
    

    这个问题已经提出来了( https://stackoverflow.com/questions/784666/ ), in the comments on this blog post a year or so ago on the structuremap mailing list .

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

    更新 所以这不是解决问题的最好方法,但是在仔细研究了约书亚提到的问题之后,我不得不做以下几件事来让它发挥作用: StructureMap, Code Access Security and a Bad Solution to a Problem . 希望有更好的解决办法。

    4 回复  |  直到 14 年前
        1
  •  0
  •   Joshua Flanagan    15 年前

    这是个虫子,已经在后备箱里修好了。它将包含在2.6+版本中。 某些早期版本的structuremap会试图不必要地将动态程序集写入磁盘,或者不必要地尝试从文件系统读取。

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

        2
  •  2
  •   Mike    15 年前

    值得一提的是,我遇到了同样的问题,我完全控制了这个盒子,甚至将所有权限设置为完全信任。对于iis 7.5,我必须将用于特定应用程序池的标识更改为networkservice,而不是application pool identity。一旦我重新启动iis,它就工作了。

        3
  •  1
  •   Remus    14 年前

    仅供参考,我使用的是StructureMapv2.6.1,遇到了这个问题。

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

    IgnoreStructureMapConfig = true;
    
        4
  •  0
  •   Handcraftsman    15 年前

    使用Windows7上的官方StructureMap2.5.4版本和IIS7.5,我仍然遇到了这个问题。 马洛奇的零钱

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

    有必要解决 FileIOPermission 例外,但我随后收到 Request for the permission of type ‘System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089′ failed. 我用迈克的解决方案解决了这个问题 step-by-step visualization )