我正在尝试使用此代码(来自同一服务器上的另一个站点)在 IIS 中创建一个网站
using Microsoft.Web.Administration;
//...
ServerManager manager = new ServerManager();
manager.Sites.Add(Host, "http", ":80:" + Host, Path);
//...
但是我得到了这个异常(exception):
消息:文件名:redirection.config 错误:由于权限不足,无法读取配置文件
我试过这样的模拟:http://www.codeproject.com/KB/cs/zetaimpersonator.aspx 但随后我收到了一个丑陋的 COM 错误。
模拟正确用户或指定运行管理器的用户的最佳方式是什么。
请您参考如下方法:
为了使用ServerManager API 你需要是被管理的机器上的本地管理员。当您的代码在 IIS 应用程序的上下文中运行时,您需要将此应用程序的应用程序池身份更改为管理用户(IIS 7.x 上的默认身份是 ApplicationPoolIdentity,这是一个非特权用户)。
或者,您可以通过将这些元素添加到 <system.web> 来启用 ASP.NET 模拟Web.config 中的部分:
<authentication mode="Windows" />
<identity impersonate="true" />
...并通过启用 Windows Authentication对于 IIS 应用程序。但通常不建议这样做(参见:http://www.hanselman.com/blog/AvoidUsingImpersonationInASPNET.aspx)。
