我必须使用c#以编程方式回收IIS(版本7.5)应用程序池。当我尝试使用“ServerManager”类获取ApplicationPoolCollection时,会引发UnauthorizedAccessException。 我想我必须使用模仿。但我不知道使用假冒。无论如何使用模拟而不是web.config?
答案 0 :(得分:0)
要在IIS中执行任何管理操作,例如回收应用程序池,启动和停止站点,创建网站等,您需要以管理员身份运行。
如果您想以编程方式模拟用户,则需要使用WindowsIdentity.Impersonate
方法。
有一个相当不错的示例代码片段可以帮助您入门。
当然,在web.config
文件(或硬编码)中为高权限用户存储凭据时,所有常见的警告都适用于此。
此外,如果您尝试调试使用托管ServerManager
API以编程方式访问IIS的代码,请确保通过执行“以管理员身份运行”来启动Visual Studio。即使您自己的Windows帐户是Administrators组的成员,也需要执行此操作。