我正在尝试为我们的Web应用程序编写配置工具。我正在尝试使用Microsoft.Web.Administration.ServerManager在IIS7.5中远程创建一个网站。
CODE:
using (ServerManager serverManager = ServerManager.OpenRemote("MyRemoteHost")) { serverManager.Sites.Add("Contoso", "http", "*:80:www.contoso.com", @"C:\inetpub\wwwroot\Contoso"); serverManager.CommitChanges(); }
以上代码连续失败并出现错误:索引无效。 (HRESULT异常:0x80070585)
备注:
非常感谢任何解决此问题的帮助。
谢谢
答案 0 :(得分:1)
通过在一个非常大的,受到严格监管的公司网络上使用连接到我的目标服务器的远程serverManager对象,我也遇到了同样的问题。
经过一些调查后,结果证明网站是在服务器管理器的特定实例上创建的,尽管有错误,但使用.CommitChanges();该serverManager对象上的方法将成功保存新网站。
var serverManager = ServerManager.OpenRemote("ServerName");
var sites = string.Join(";", serverManager.Sites.Select(o => o.ToString()));
Console.WriteLine(sites);
try
{
serverManager.Sites.Add("newWebSite", @"D:\TestSite", 80);
}
catch ( Exception e )
{
Console.WriteLine(e);
}
Console.WriteLine(string.Join(";", serverManager.Sites.Select(o => o.ToString())));
Console.WriteLine(string.Join(";", ServerManager.OpenRemote("ServerName").Sites.Select(o => o.ToString())));
serverManager.CommitChanges();
Console.WriteLine(string.Join(";", ServerManager.OpenRemote("ServerName").Sites.Select(o => o.ToString())));
Console.ReadLine();
使用此示例代码,未捕获catch,表明程序仍然有效,我可以清楚地看到在serverManager的原始实例和我创建的新实例中添加到远程服务器的网站。
控制台返回了这个:
CopyOfLive;Default Web Site
CopyOfLive;Default Web Site;newWebSite
CopyOfLive;Default Web Site
CopyOfLive;Default Web Site;newWebSite
此外,检查服务器上的IIS证明该网站已创建。
我希望这有帮助!