3

Web アプリケーション用のプロビジョニング ツールを作成しようとしています。Microsoft.Web.Administration.ServerManager を使用して、IIS7.5 で Web サイトをリモートで作成しようとしています。

コード:

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

上記のコードは、次のエラーで継続的に失敗します:無効なインデックス。(HRESULT からの例外: 0x80070585)

ノート:

  • このコードをホスト上でローカルに実行すると、エラーは発生せず、Web サイトは正常に作成されます。
  • 私のユーザーは、リモート ホストの管理者権限を持っています。
  • サイトのリストの読み取りなど、リモート ホストで他の操作を実行できます。
  • 私のワークステーションは Windows 8 を実行しています
  • Server 2012 ホストに対して上記のコードを正常に実行できました。Server 2008R2 ホストに対して Windows 8 クライアントでこのコードを実行すると、ある種の非互換性があるようです。
  • Microsoft.Web.Administration.7.0.0.0 を使用しています。

この問題を解決するための助けをいただければ幸いです。

ありがとうございました

4

1 に答える 1

2

非常に大規模で厳しく規制された企業ネットワーク上のターゲット サーバーに接続されたリモート serverManager オブジェクトを使用することで、私も同じ問題を抱えていました。

ただし、いくつかの調査の後、Web サイトはサーバー マネージャーの特定のインスタンスで作成され、エラーが返されたにもかかわらず、.CommitChanges(); を使用していることが判明しました。その serverManager オブジェクトのメソッドは、新しい Web サイトを正常に保存します。

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 の元のインスタンスと作成した新しいインスタンスの両方で、リモート サーバーに追加された Web サイトを明確に確認できます。

コンソールはこれを返しました:

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

さらに、サーバーの IIS を確認したところ、Web サイトが作成されていたことが判明しました。

これが役立つことを願っています!

于 2016-03-07T10:58:41.217 に答える