首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#在ApplicationPoolIdentity下的远程ApplicationPoolIdentity会话

C#在ApplicationPoolIdentity下的远程ApplicationPoolIdentity会话
EN

Stack Overflow用户
提问于 2012-08-29 18:36:38
回答 1查看 1.2K关注 0票数 4

使用我从微软找到的一个图书馆,我一直试图(用C#)通过Live@Edu为我的用户提供电子邮件帐户,这个库使用远程PowerShell会话来实现这一点。我已经用一个模拟本地管理员帐户的using() { }块包装了using() { }调用。当我在自己的开发机器上运行代码时,它工作得很好,并提供了Live@Edu上的帐户,但是当我在生产服务器上运行相同的代码时,我会从Access is Denied中得到一个PowerShell错误。

我刚刚注意到的是,如果我将服务器上的用户更改为我自己的域帐户,那么在生产服务器上一切都可以正常工作,但将其保留为ApplicationPoolIdentity不起作用。因此,即使在我的代码中我模拟本地管理员,这些凭据也不会传递给PowerShell会话。奇怪的是,当脚本在我自己的机器上运行,也在ApplicationPoolIdentity下运行时,没有问题,这使我相信脚本实际上是在我的机器上的我自己的帐户下运行的(而且我是一个本地管理员)。

我确实让代码显示了$env:username的值,它给了我机器名,我希望它能给我它运行的实际用户名,因为当我将命令直接输入到PowerShell窗口时,这就是我所得到的。

当使用我在代码中模拟的凭据交互登录到远程服务器时,我可以手动将所有PowerShell cmdlts输入到PowerShell窗口中,它们可以正常工作。

我不想让我的impersonation总是在管理员帐户下运行,因为这是愚蠢的,所以是否有一种方法可以作为管理员运行PowerShell脚本,而不是我正在做的模拟呢?

更新:

发生了一件奇怪的事情,认为这对我是一种解决办法。将代码部署到服务器后,我创建了一个本地管理员帐户。然后我转到,并将所有者从ApplicationPoolIdentity更改为我刚刚创建的管理帐户。在此之后,该页面可以很好地运行PowerShell脚本。我以前就知道这一点,但不想让IIS使用管理帐户。然后,我继续将应用程序池设置为ApplicationPoolIdentity,并删除了本地管理帐户,页面仍然有效!?我重新启动了IIS和Web服务器本身,一切都正常。我所能想到的就是将Application移到一个Admin帐户上,永久地改变了App中的一些属性。我现在已经放了一个关于ServerFault的修正问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-18 15:45:08

原来这个问题与IIS中的Load User Profile选项有关,因为我的应用程序被设置为服务器上的False (False是Windows 2008的默认选项)。在阅读了这个属性之后,我不完全确定这对我的场景有什么意义,但在我的本地机器上设置的IIS与Web服务器的设置不同。现在,所有PowerShell调用都在服务器上完美无缺地工作。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12184393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档