簡體   English   中英

使用Microsoft.Web.Administration以編程方式在IIS7中創建遠程站點:索引無效。 (來自HRESULT的異常:0x80070585)

[英]Programmatically creating a remote site in IIS7 using Microsoft.Web.Administration: Invalid index. (Exception from HRESULT: 0x80070585)

我正在嘗試為我們的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對象,我也遇到了同樣的問題。

然而,經過一些調查后發現,網站WAS是在服務器管理器的特定實例上創建的,盡管有錯誤,但使用.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證明該網站已創建。

我希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM