2009-10-23 99 views
5

你好。我试图解决一个显然并不少见的问题,我不知道如何找到解决问题的方法。当我通过IIS我的机器上运行StructureMap,我得到一个例外,它看起来像这样:StructureMap,IIS 7.5和FileIOException

**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(https://stackoverflow.com/questions/784666/),in the comments on this blog posta year or so ago on the structuremap mailing list

我的问题是没有运行它在一个国外的托管环境。我甚至无法让它在我自己的盒子上运行(IIS 7.5,Win7 RC,.NET 3.5)。我试图将网站配置为使用自定义策略文件,并将FileIOPermission标记为无限制访问...没有骰子。如果任何人有一些提示或链接,将不胜感激。

更新 所以没有办法,这是解决问题的最好方法,但周围挖掘和寻找到约书亚后面提到的,这些都是我必须做的就是它的工作的事情:StructureMap, Code Access Security and a Bad Solution to a Problem。更好的解决方案,将不胜感激。

+0

正如在接受的答案中指出的那样,处理这个问题的方式是在StructureMap中进行代码更改。没有IIS配置更改是必要的。 – Mallioch 2009-10-25 14:55:58

回答

0

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

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

+0

我正在使用版本2.5.3。我没有从源头上构建它。 – Mallioch 2009-10-23 20:46:23

2

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

+0

这解决了我的问题。 – 2010-08-05 20:52:38

0

使用官方的StructureMap 2.5.4在Windows 7和IIS 7.5上构建我仍然遇到这个问题。 Mallioch的变化

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)解决。

1

仅供参考,我正在使用StructureMap v2.6.1并遇到此问题。

我不使用XML配置,因此我将以下行添加到了我的配置代码中,该代码解决了问题。

IgnoreStructureMapConfig = true;