代码之家  ›  专栏  ›  技术社区  ›  Tom Lianza

使用DotNetOpenAuth库时出现PolicyException

  •  3
  • Tom Lianza  · 技术社区  · 16 年前

    当我将dotnetopenauth dll放到/bin目录中时,我的应用程序将不会使用以下堆栈跟踪运行。有人对这个图书馆有经验吗?我查看了他们的文档,怀疑我没有正确部署。我的Web应用程序应该在本地计算机上完全信任地运行,因此不清楚它请求的权限是什么,无法获取。

    谢谢! 汤姆

    [PolicyException: Required permissions cannot be acquired.]
       System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission) +10238142
       System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission) +97
    
    [FileLoadException: Could not load file or assembly 'DotNetOpenAuth, Version=3.3.1.9337, Culture=neutral, PublicKeyToken=2780ccd10d57b246' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]
       System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0
       System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +416
       System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +166
       System.Reflection.Assembly.Load(String assemblyString) +35
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +190
    
    [ConfigurationErrorsException: Could not load file or assembly 'DotNetOpenAuth, Version=3.3.1.9337, Culture=neutral, PublicKeyToken=2780ccd10d57b246' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11207304
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +388
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +232
       System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +48
       System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +210
       System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath configPath, Boolean supportLocalization, String outputAssemblyName) +76
       System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories, Boolean isDirectoryAllowed) +11196482
       System.Web.Compilation.BuildManager.CompileCodeDirectory(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories) +185
       System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +551
    
    [HttpException (0x80004005): Could not load file or assembly 'DotNetOpenAuth, Version=3.3.1.9337, Culture=neutral, PublicKeyToken=2780ccd10d57b246' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]
       System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +76
       System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +1012
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) +1025
    
    [HttpException (0x80004005): Could not load file or assembly 'DotNetOpenAuth, Version=3.3.1.9337, Culture=neutral, PublicKeyToken=2780ccd10d57b246' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11301302
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +88
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4338644
    
    2 回复  |  直到 16 年前
        1
  •  4
  •   Tom Lianza    16 年前

    奇怪的是,我发现解决方案与 this .

    应用程序池标识具有 属性名为“加载用户配置文件”。 如果该值为假,则可以 接收上面显示的错误。到 解决此问题,打开IIS管理器并 导航到应用程序池 身份。您可以在 “高级设置”窗口。变化 这是真的。

    我发现当我把它设置为真时,图书馆又开始工作了。当我把它翻转回假状态时,它继续工作,即使在服务重新启动和应用程序池循环之后。奇怪的是,现在一切似乎都好起来了。

        2
  •  1
  •   Andrew Arnott    16 年前

    代码访问安全性似乎不考虑使用完全信任加载DotNetOpenAuth。实际上,它只需要中等信任,但下面是DotNetOpenAuth请求的最小权限列表:

    [assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
    [assembly: WebPermission(SecurityAction.RequestMinimum, ConnectPattern = @"http://.*")]
    [assembly: WebPermission(SecurityAction.RequestMinimum, ConnectPattern = @"https://.*")]
    

    某些中等信任配置中可能缺少第二对,但如果您以完全信任的方式运行,则应该不会出现问题。

    尝试添加 <trust level="Full"/> 到其中的web.config文件 <system.web> 第节,看看这是否有帮助,或者生成一个可以帮助您缩小问题范围的错误。

    推荐文章