IIS7无法授予最低权限请求

时间:2009-12-04 13:02:54

标签: iis permissions

当我使用FileHelpers.dll时出现此错误,但我的IIS设置为完全信任级别,所以它不应该那样

这是完整的堆栈跟踪:

    [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 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' 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 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' 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.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp) +283
       System.Web.Compilation.BuildManager.CompileGlobalAsax() +50
       System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +676

    [HttpException (0x80004005): Could not load file or assembly 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' 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 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' 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

9 个答案:

答案 0 :(得分:83)

当我使用干净的Windows 7安装重建我的开发机器时遇到了类似的问题。在四处寻找之后,我发现了一个对我有用的解决方案。

在IIS应用程序池高级设置中,在“Process Model”下,将Load User Profile设置为true。

还有其他一些要检查的东西,比如你的信任级别,但没有一个适用于我(它已经完全信任我的开发机器)。设置应用程序池以加载用户配置文件修复它。

答案 1 :(得分:21)

我在另一个实例中看到过这个错误,例如,IIS正在通过UNC路径运行应用程序或虚拟路径(即\\svr\share\folder)。即使Load User Profile=true我仍然遇到PolicyException错误。它通过运行Code Access Security Policy Tool (Caspol.exe)来解决,以便为UNC路径添加完全信任。由于我们同时拥有64 bit32 bit .Net 2.x.Net 4.x,我在所有四个环境中运行它,如下所示:

%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*"   FullTrust -exclusive on
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*"   FullTrust -exclusive on
%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*"   FullTrust -exclusive on
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*"   FullTrust -exclusive on

注意事项:

  • 对于.Net 4.x,请务必启用NetFx40_LegacySecurityPolicytruecaspol.exe命令将无法正常工作。
  • 为给定环境添加caspol.exe的重复条目。运行以下命令查看您的条目:

    %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol.exe -a -lg %SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\caspol.exe -a -lg %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\caspol.exe -a -lg %SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\caspol.exe -a -lg

答案 2 :(得分:2)

我们在Windows 2008 R2中遇到了类似的问题,我们的应用程序可以在64位模式下正常工作,但是切换到32位模式会停止运行并抛出权限错误,结果是,在IIS7下的高级设置>>过程模型>>默认情况下,“身份”设置已切换为“应用程序池标识”,可能需要更改为“网络服务”才能以32位模式运行。

我们做到了,现在我们顺利地哼唱着。想想这个信息的大小可能是每个人都指向文件夹权限的原因,因为从技术上讲它是文件夹权限问题。但是更改是在IIS中,而不是文件夹本身的安全设置。

答案 3 :(得分:2)

看来这是通用程序集不会加载错误。我感谢所有其他帖子,因为它们成为错误可能来源的列表。

我又发现了一个。我已经尝试了以上所有但没有成功。我终于意识到我从Visual Studios Express 2008发布了Web应用程序,其构建配置为“Debug”。将构建配置更改为“发布”后,Web App起作用。

具体细节: Visual Studios Express 2008将文件移动到Win 2008 R2服务器上的IIS7.5。

答案 4 :(得分:1)

我有类似的问题,我通过以下步骤解决了这个问题:

  1. 转到IIS。
  2. 右键单击网站文件夹,查看它的应用程序池。
  3. 右键单击应用程序池并转到高级设置。
  4. 在流程模型部分中,将// define some HTML content with style $html = <<<EOF <!-- EXAMPLE OF CSS STYLE --> <style> h1 { color: navy; font-family: times; font-size: 24pt; text-decoration: underline; } input { background-color: red; padding: 5px 10px; } </style> <h1 class="title">Example of <i style="color:#990000">XHTML + CSS</i></h1> <input type="text" value="test.." /> EOF; // output the HTML content $pdf->writeHTML($html, true, false, true, false, ''); 设置为load user profile

答案 5 :(得分:1)

她所属的问题是使用ddl不信任SharePoint 解决问题:

  1. 打开IIS
  2. 点击.net最高级别
  3. 选择了完整(内部)

答案 6 :(得分:1)

这是一个安全/信任问题。在Windows资源管理器中打开DLL的属性。它可能被标记为已阻止,因为它是从Internet下载的。转到属性并单击“取消阻止”按钮,问题可能会解决。

enter image description here

答案 7 :(得分:-1)

旧问题,但我的答案被删除,因为我只发布了一个链接。

也许您会收到此错误: 错误:

无法加载文件或程序集“ Microsoft.Practices.EnterpriseLibrary.Configuration.Design,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一。无法授予最低权限请求。 (来自HRESULT的异常:0x80131417)

发生此错误是因为本地计算机的默认信任级别是“完全信任”,但在网络共享中则不是。

因此,要远程编译应用程序,您必须: 转到控制面板->行政工具-> Microsoft .NET Framework 2.0配置 打开“我的电脑”->“运行时安全策略”->“机器”>“代码组”>“所有代码”>“新建”(右键单击以显示菜单以选择“新建” )

在下图中,URL字段是共享文件夹的路径,在这种情况下,但是您可以选择“强名称”(.exe或.dll)等

单击“完成”,您可以编译您的应用程序!

https://medium.com/@marcoscavaleiro/failed-to-grant-minimum-permission-requests-7245cf694ebd

答案 8 :(得分:-2)

在IIS 6.0应用程序池高级设置中,在“Process Model”下,将Load User Profile设置为true。

还有其他一些要检查的东西,比如你的信任级别,但没有一个适用于我(它已经完全信任我的开发机器)。设置应用程序池以加载用户配置文件修复它。

有助于解决

无法在iis中获取

所需的权限来解决它..