【问题标题】:IIS - Required permissions cannot be acquired. Enabled "Full Trust" and Load User Profile on App Pool is "True"IIS - 无法获得所需的权限。启用“完全信任”并在应用程序池上加载用户配置文件为“真”
【发布时间】:2011-06-09 20:44:37
【问题描述】:

设置

在 Server-A 上的 .NET 2.0 应用程序池中运行了一个 IIS 6 应用程序。 IIS 7 Server-B 需要在不同的 URL 下托管相同的代码库。我在 Server-B 的网站下创建了一个虚拟目录,指向 Server-A 上应用程序的网络路径。我已在 Server-B 上启用此虚拟目录,作为在其自己的 .NET 2.0 应用程序池中以经典模式运行的应用程序。两个应用程序池作为有权访问该文件夹的同一个域帐户运行。

问题

从服务器 A 访问站点时,它工作正常。然而,从服务器 B 访问它会产生臭名昭著的“无法获得所需权限。”错误。

这两天我一直在努力寻找解决这个问题的方法。两种最常见的解决方案是检查 Server-B 框上的 CLR 信任级别,或者将应用程序池上的 Load User Profile 属性设置为“True”。由于我拥有完全的管理权限,我将信任级别设置为完整并将配置文件设置为“真”。强烈地将所有程序集命名为应用程序并将它们扔到 GAC 中并不是我想要去的地方。

我确定我只是在某处遗漏了一些配置。有任何想法吗?谢谢。

【问题讨论】:

  • 在过去的几周里,我断断续续地与这个作斗争。一直没有找到解决办法。更改了部署脚本以将更新的代码复制到两个位置。

标签: asp.net iis


【解决方案1】:

我们曾经遇到过类似的问题。

在我们的例子中,作为应用程序池身份的用户从未登录到服务器。因此,没有本地用户配置文件,因此系统尝试使用配置文件时出现问题。

作为测试尝试将应用程序池的身份设置为您用于登录的管理员帐户。

【讨论】:

  • 尝试以应用程序池用户身份登录无济于事。 MSDN 呼叫我来了。
【解决方案2】:

手动验证用户是否可以访问该共享。尝试以该用户身份登录 Windows,然后访问该共享(或使用类似“runas /User:{Domain\UserName} net use {\server\share}”之类的内容来伪造它)。

还可以尝试在文件实际存在的任何位置加载ShareMonitor。它应该告诉您哪个用户帐户正在尝试访问给定的共享。它可能不是您认为的帐户。我不记得是否是这个程序,但我过去曾使用过非常相似的东西来解决一个非常奇怪的权限问题。

这应该确定它是否是文件访问问题。如果不是,那么我只能说确保您启用了 ASP.NET(在 Windows 服务器上它是一个单独的选项)。

还要检查“临时 ASP.NET 文件”目录的文件权限。我必须先明确地添加用户对它的写入权限才能让事情正常工作。

【讨论】:

  • 使应用程序池的域帐户成为两个盒子上的服务器管理员。登录到两个盒子并以两种方式查看文件。没有骰子。就像我上面说的,MSDN 通话时间。
  • 对于net use 语句,您可能希望使用net use \\server\share /user:domain\username,而不是调用runas,顺便说一句:o)
【解决方案3】:

在我的情况下,我的 IIS 应用程序池的 LoadUserProfile=false,因此它没有加载应用程序池的识别(域帐户)的配置文件。即使我的 Webroot 文件/文件夹(包括 /bin)具有正确的权限,这也会导致无法获取权限。设置 LoadUserProfile=true 解决了我的设置问题。

【讨论】:

    【解决方案4】:

    我会将应用程序池身份属性(在高级设置中)设置为管理员。这样,您的应用程序将在服务器上运行,就像它在本地设置上运行一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 2015-11-18
      • 2018-03-30
      • 2021-07-01
      相关资源
      最近更新 更多