2009-10-23 104 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;