在远程机器上将网站添加到IIS7中的C#方法

5
我目前有一个用C#编写的应用程序,可以在当前计算机上向IIS7添加网站,并且它运行得非常完美。以下是代码:

 var iisManager = new ServerManager();       

 var sites = iisManager.Sites;

 var site = sites.Add("WebsiteName", "C:\Website", 80);

 var application = site.Applications[0];

 application.ApplicationPoolName = appPool;

 iisManager.CommitChanges();

我需要创建一个版本的这段代码,用于在同一网络上位于远程计算机上的 IIS 上添加网站。该代码如下:

 var iisManager= ServerManager.OpenRemote("machineName"); //I've also tried machines IP 

 var sites = iisManager.Sites["Default Web Site"];

 var site =  Sites.Applications.Add("WebsiteName", "C:\Website", 80);

 site.ApplicationPoolName = appPool;

 iisManager.CommitChanges();

当 machineName 是执行代码的计算机时,它会将网站添加到 IIS。但是,如果 machineName 是远程计算机,则会出现以下异常:

从 "remote machine name" 检索带有 CLSID {2B72138B-3F5E-4502-8052-803546CE3364} 的远程组件的 COM 类工厂失败,原因是以下错误:80070005 “remote machine”

在执行以下代码时出现异常:

var iisManager= ServerManager.OpenRemote("machineName");

在执行上述代码之前,我使用模拟身份来模拟管理员。我可以远程登录到机器,甚至使用C#代码在机器上创建文件。
我猜测这是远程机器的权限问题,或者可能是因为它是虚拟机,我真的不确定。
代码80070005相当普遍,表示受限制的访问,但我不明白为什么会出现这种情况,考虑到我正在模拟管理员。
我在运行Windows 7 sp1 x64的机器上执行代码,远程虚拟机正在运行Windows Server 2008 sp2 x64。
如果有人知道如何解决这个问题或另一种在远程计算机上添加网站到IIS的方法,我很乐意听取。
谢谢。

1
我相信你需要配置IIS 7管理器以允许远程连接。请参阅http://www.iis.net/learn/manage/remote-administration/remote-administration-for-iis-manager。一旦配置完成,您应该能够在本地计算机上打开IIS 7管理器,然后连接到远程计算机。一旦这个工作正常了,我猜你的代码也会正常运行。同时,请检查本地防火墙和远程防火墙,确保没有被拒绝的东西,例如红色标记。因此,请检查两台计算机的事件日志。这可能会有所启示。 - Kyle
Kyle,谢谢您的回复。事实证明我的代码是有效的,但我使用的帐户没有正确的权限,因为它在不同的域中。当我在两台机器使用相同凭据并且在同一域中进行测试时,它完美地工作了。 - Dan
事实证明,我的问题出在模拟身份上。我使用了“正确”的管理员凭据进行模拟,但由于我的计算机和其他计算机位于两个不同的域中,因此它期望的是DomainA.Admin,而我却试图使用DomainB.Admin登录。 - Dan
1个回答

0

首先,您需要以管理员身份运行Visual Studio,并关闭服务器的Windows防火墙,然后查看是否可以连接远程服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接