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