【发布时间】:2013-08-04 02:16:56
【问题描述】:
我目前有一个用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 是远程机器时,我得到以下异常
由于以下错误,从“远程机器名称”中检索 CLSID 为 {2B72138B-3F5E-4502-8052-803546CE3364} 的远程组件的 COM 类工厂失败:80070005“远程机器”
执行时出现异常
var iisManager= ServerManager.OpenRemote("machineName");
在执行上述代码之前,我使用模拟来模拟管理员。 我可以远程进入机器,甚至可以使用 C# 代码在机器上创建文件。
我认为远程计算机上的权限存在问题,或者可能是因为它是虚拟机,我真的不确定。
代码 80070005 相当笼统,表示访问受限,但我不明白为什么考虑到我在冒充管理员。
我正在 Windows 7 sp1 x64 机器上执行代码,而远程 VM 正在运行 Windows Server 2008 sp2 x64。
如果有人对如何解决此问题或以其他方式将网站添加到远程计算机上的 IIS 有任何想法,我很乐意听取他们的意见。
谢谢
【问题讨论】:
-
我相信您必须配置 iis 7 管理器以允许远程连接。请参阅iis.net/learn/manage/remote-administration/…,一旦配置完成,您就可以在本地计算机上打开 iis 7 管理器,然后在 tbis 工作时连接到远程计算机,我猜您的代码会。还要检查本地防火墙和远程防火墙以确保没有被拒绝,即红色的。所以检查两台机器上的事件日志。它可能会带来一些启示
-
凯尔,感谢您的回复。事实证明我的代码可以正常工作,但是我使用的帐户没有正确的权限,因为它位于不同的域中。当我在两台机器使用相同凭据且位于同一域中的环境中对其进行测试时,它运行良好。
-
原来我的问题是假冒。我正在使用“正确”的管理员凭据进行模拟,但因为我的机器和另一台机器位于两个不同的域中,所以它期待 DomainA.Admin 而我试图使用 DomainB.Admin 登录
标签: c# iis-7 windows-server-2008-r2 remote-server servermanager