![](/img/trans.png)
[英]How do I manipulate Handler Mappings cleanly in IIS7 using the Microsoft.Web.Administration namespace?
[英]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)
筆記:
任何幫助解決這個問題將不勝感激。
謝謝
通過在一個非常大的,受到嚴格監管的公司網絡上使用連接到我的目標服務器的遠程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.