1

servermanagerを使用して新しいサーバーを作成したいときに問題が発生しました。

これが私のコードです



    ServerManager sm = new ServerManager();
    Site s = sm.Sites.Add("NEWSERVER", path, 80);

    BindingCollection bindingCollection = s.Bindings;
    bindingCollection.Clear();

    Binding binding = s.Bindings.CreateElement("binding");
    binding["protocol"] = "https";
    binding["certificateHash"] = "‎thumprint value";
    binding["certificateStoreName"] = "MY";
    binding["bindingInformation"] = string.Format("{0}:{1}:{2}", "*", "443", "subdomain.url.com");
    bindingCollection.Add(binding);

    Binding binding2 = s.Bindings.CreateElement("binding");
    binding2["protocol"] = "http";
    binding2["bindingInformation"] = string.Format("{0}:{1}:{2}", "*", "80", "subdomain.url.com");
    bindingCollection.Add(binding2);

    s.ServerAutoStart = true;

    ApplicationPool a = sm.ApplicationPools.Add("NEWSERVER");
    a.ManagedRuntimeVersion = "v4.0";
    s.ApplicationDefaults.ApplicationPoolName = "NEWSERVER";
    sm.CommitChanges();

実行すると、サーバー+バインディングが作成されますが、次のエラーが発生します。

「アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))」

これは、sm.CommitChnages()が実行されたときに発生します。

アクセスできないものがわかりません。何か案は?

4

2 に答える 2

0

このコードは、ローカル管理者アカウントで実行する必要があります。

ASP.NETアプリケーションの場合、選択肢は次のとおりです。

  1. WindowsIdentityを使用してローカル管理者になりすます。
  2. または、ローカル管理者アカウントでアプリケーションプールを実行します。

どちらもセキュリティ面で注意が必要な点がありますが、

http://msdn.microsoft.com/en-us/library/ff647404.aspx

于 2012-05-30T09:43:14.797 に答える
0

バインディングを動的に追加しようとすると、同じ問題が発生します。管理者としてアプリケーションを実行しました

それは私のために働いた。

于 2016-08-25T03:53:30.887 に答える