使用 Microsoft.Web.Administration 以编程方式在 IIS7 中创建远程站点:索引无效.(HR



我正在尝试为我们的Web应用程序编写一个配置工具。我正在尝试使用 Microsoft.Web.Administration.ServerManager 在 IIS7.5 中远程创建网站。

法典:

using (ServerManager serverManager = ServerManager.OpenRemote("MyRemoteHost")) {    serverManager.Sites.Add("Contoso", "http", "*:80:www.contoso.com", @"C:\inetpub\wwwroot\Contoso");    serverManager.CommitChanges();}

上面的代码不断失败,并显示错误:索引无效。(HRESULT的例外:0x80070585)

笔记:

  • 如果我在主机上本地运行此代码,则不会遇到错误,并且网站创建成功。
  • 我的用户在远程主机上具有管理权限。
  • 我能够在远程主机上执行其他操作,例如读取站点列表。
  • 我的工作站正在运行 Windows 8
  • 我已经设法在Server 2012主机上成功执行上述代码。在 Windows 8 客户端上针对 Server 2008R2 主机运行此代码时,似乎存在某种不兼容。
  • 我正在使用Microsoft.Web.Administration.7.0.0.0。
任何

解决此问题的帮助将不胜感激。

谢谢

在一个非常大的、受到严格监管的公司网络上使用连接到目标服务器的远程 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();

使用此示例代码,捕获没有命中,表明该程序仍然有效,我可以清楚地看到在serverManager的原始实例和我创建的新实例中添加到远程服务器的网站。

控制台返回了以下内容:

CopyOfLive;Default Web Site
CopyOfLive;Default Web Site;newWebSite
CopyOfLive;Default Web Site
CopyOfLive;Default Web Site;newWebSite

此外,在服务器上检查IIS证明该网站已创建。

我希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新