设置
在Server-A上的.NET 2.0 App Pool中运行了一个IIS 6应用程序。 IIS 7 Server-B需要在不同的URL下托管相同的代码库。我在Server-B的网站下创建了一个虚拟目录,指向Server-A上应用程序的网络路径。我已经在Server-B上启用了这个虚拟目录,作为在经典模式下运行在自己的.NET 2.0应用程序池中的应用程序。两个应用程序池都作为可访问该文件夹的同一域帐户运行。
问题
从Server-A访问该站点时,它可以正常工作。但是,从Server-B访问它会产生臭名昭着的“无法获取所需权限。”错误。
我一直试图找到这个问题的解决方案两天。两种最常见的解决方案是检查Server-B框上的CLR Trust级别,或将App Pool上的Load User Profile属性设置为“True”。由于我拥有完全的管理权限,因此我将信任级别设置为“完全”并将配置文件设置为“True”。强烈命名应用程序并将它们放入GAC的所有程序集都不是我想去的地方。
我确定我在某个地方错过了一些配置。有任何想法吗?感谢。
答案 0 :(得分:1)
我们曾遇到过类似的问题。
在我们的案例中,作为应用程序池标识的用户从未登录过服务器。因此,没有本地用户配置文件,因此系统尝试使用配置文件时出现问题。
作为测试,请尝试将应用池的标识设置为您用于登录的管理员帐户。
答案 1 :(得分:0)
手动验证用户是否可以访问该共享。尝试以该用户身份登录Windows,然后访问该共享(或使用“runas / User:{Domain \ UserName} net use {\ server \ share}”来伪造它。)
同时尝试在文件实际存在的任何位置加载ShareMonitor。它应该告诉您用户帐户尝试访问给定共享的内容。它可能不是您认为的帐户。我不记得是不是这个程序,但我过去使用了一些非常相似的东西来找出一个非常奇怪的许可问题。
这应该确定它是否是文件访问问题。如果不是,那么我可以说的是确保你启用了ASP.NET(在Windows服务器上它是一个单独的选项)。
还要检查“Temporary ASP.NET Files”目录上的文件权限。我必须先明确地添加用户写入权限才能使事情正常运行。
答案 2 :(得分:0)
在我的情况下,我的IIS应用程序池有LoadUserProfile = false,因此它没有加载应用程序池的Identify(域帐户)的配置文件。这导致无法获取权限,即使我的Webroot文件/文件夹(包括/ bin)具有正确的权限。设置LoadUserProfile = true修复了我的设置问题。
答案 3 :(得分:0)
我会将该应用程序池标识属性(在高级设置中)设置为管理员。这样,您的应用程序将在服务器上运行,就像在本地设置上一样。