0

我在本地運行使用Visual Studio開發服務器在.NET 4.0 Web應用程序(內置在VS2010 web服務器),並在過去的幾個月,我的StructureMap引導程序文件已完美運作。System.Security.SecurityException被扔在初始化StructureMap引導程序

我使用StructureMap 2.6.1

我並沒有改變引導程序文件或Web.config文件,突然,試圖啓動我的Web應用程序時,我得到這個奇怪的錯誤。

這裏被從網站上拋出的錯誤:

error

這是一個有點困難閱讀。它說:

Security Exception 
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 Failed. 

這裏是我的引導程序文件中的代碼:

public class BootStrapper 
{ 
    public static void ConfigureStructureMap() 
    {    
     ObjectFactory.Initialize(x => 
     { 
      x.AddRegistry<ProductRegistry>(); 
     }); 
    } 
} 

public class ProductRegistry : Registry 
{ 
    public ProductRegistry() 
    { 

     For<IFirmRepository>() 
      .Use<FirmRepository>().Ctor<string>("connectionString").Is(ConfigurationManager.ConnectionStrings["FeesAndFlows"].ConnectionString); 

     For<ICryptographyService>() 
      .Use<Rijndael>(); 

     For<IUserRepository>() 
      .Use<UserRepository>().Ctor<string>("connectionString").Is(ConfigurationManager.ConnectionStrings["FeesAndFlows"].ConnectionString); 

     For<IAuthenticationService>() 
      .Use<AuthenticationService>(); 

     For<ILogger>() 
      .Use<DatabaseLogger>(); 

    } 
} 

錯誤正在對這一行拋出:

x.AddRegistry<ProductRegistry>(); 

我已經嘗試添加每個這些線路到我的Web.config文件,一次一個,而他們並沒有解決這個問題:

<trust level="Full" /> 

<securityPolicy> 
    <trustLevel name="Full" policyFile="internal"/> 
</securityPolicy> 

沒有人有任何想法或可能聽說過這樣的問題嗎?這是非常重要的,沒有正確啓動StructureMap的B/C,我的整個應用程序將不會運行。

謝謝, 邁克

UPDATE:

好了,看來我的問題是局部的。其他開發人員可以下載代碼,並在本地機器上運行它。奇怪的。在調試模式下爲我的web項目在本地運行時,它們引導StructurMap得很好,所有實例都解決了......

爲什麼只是我的機器不能引導StructureMap任何想法?

回答

0

好吧,所以這是問題所在。這個StructureMap.dll被Win 7阻止了。我不知道如何被阻塞或阻塞了什麼,但顯然,當我將StructureMap.zip文件下載到我的系統中時,阻塞了.zip文件,反過來,導致從.zip文件中提取的所有項目也被阻止。

我每次暢通,它回到了堵塞,當我試圖運行Web應用程序。

我修復它的方法是回到原來的.zip文件,取消阻止,解壓縮它,然後將我的StruectureMap.dll引用替換爲未被阻止的引用。

瘋了。

我甚至不知道什麼原因導致文件突然被阻塞,或者Windows 7中的哪個進程確定了哪些文件應該被阻止,但是這個奇怪的操作系統「功能」花了我一天的工作量。

+0

如何解鎖Structuremap.dll? – Masoud

0

你任何機會運行從網絡驅動器的代碼(即是你的文檔文件夾重定向到網絡驅動器)?您是否在運行在域中的企業環境中?

如果是前者很可能是代碼是企業內網安全上下文中運行。如果前者不是真的,但是後者是真的,那麼網絡管理員很可能已經改變了企業範圍的CAS政策。

+0

詹姆斯,所有的代碼是在本地運行,使得沒有提及任何網絡驅動器。我基本上只是通過點擊F5來調試我的Web應用程序,然後讓它運行。所以沒有真正的IIS服務器,只有內置的VS2010 Web服務器運行本地。 –

+0

但我在域名上運行,我的公司域名。什麼是CAS政策,我應該問誰,我的網絡管理員?再次,所有這些都是在本地發生的,所以我不太確定任何類型的政策會如何影響我的運行。 –

0

我有完全相同的問題,在相同的位置,ObjectFactory.Initialize:在「/X.ServiceHost」應用

服務器錯誤。

而重寫成員繼承違反安全規則: 'StructureMap.StructureMapException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'。安全 覆蓋方法的可訪問性必須匹配被覆蓋的方法的安全性 。

描述:在執行 當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.TypeLoadException:同時覆蓋件侵犯繼承安全 規則: 'StructureMap.StructureMapException.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'。安全 覆蓋方法的可訪問性必須匹配被覆蓋的方法的安全性 。

從NuGet獲取最新的StructureMap包(2.6.4.1)修復了問題。

StructureMap NuGet Package

+0

這似乎是一個間歇性的問題,我無法弄清楚是什麼原因導致它,但刪除並重新安裝NuGet包修復它......暫時。任何人有任何想法? – Bart