我有以下问题。我正在尝试在远程机器上的 IIS 中创建一个应用程序池。这台机器运行带有 IIS 7.5 的 MS Windows Server 2012,并有一个用户“LocalAdmin”,它是一个本地帐户和管理员。我关闭了 UAC 以防止以管理员身份运行问题。所以,现在我可以:
- 连接到 IIS
- 创建虚拟目录
- 我也使用非个性化并且可以在远程机器上创建一个目录
访问应用程序池。更多细节:
var service = new DirectoryEntry(string.Format(@"IIS://{0}/W3SVC/AppPools", settings.Server), settings.FullUserName, settings.Password); DirectoryEntry pool = service.Children.Cast<DirectoryEntry>().FirstOrDefault(x => x.Name == originalAppPoolName);
这将返回一个现有的应用程序池。如果我打电话
pool.CommitChanges()
一切都很好。然后我尝试创建一个新的应用程序池DirectoryEntry appPool = service.Children.Add(newAppPoolName, "IIsApplicationPool"); appPool.CommitChanges()
但我收到
UnauthorizedAccessException
:访问被拒绝。
如何解决此异常的问题?此外,如果我在本地运行相同的代码,我没有问题:创建并运行应用程序池。所以,我相信问题在于安全性和授权。我需要做什么才能允许在本地计算机上运行的代码使用“LocalAdmin”管理员凭据在远程服务器上添加应用程序池?
PS 另外,我在远程服务器上的 SecurityLog 中看到尝试使用我的本地凭据登录。为什么会这样?如果我使用非人格化没有任何改变......
PPS 通过使用与本地计算机上相同的凭据将用户添加到远程服务器来解决问题。还有其他方法吗?