使用servermanager创建IIS,commitchanges错误

时间:2012-05-30 09:05:31

标签: c#-4.0 iis-7.5 servermanager

当我想使用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()时发生。

我无法弄清楚我无法访问哪些内容。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您必须使用本地管理员帐户运行此代码。

对于ASP.NET应用程序,您的选择是

  1. 使用WindowsIdentity作为本地管理员模拟。
  2. 或者在本地管理员帐户下运行应用程序池。
  3. 他们都有一些你需要注意的安全方面,

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

答案 1 :(得分:0)

尝试动态添加绑定时遇到同样的问题。 我刚刚以管理员身份运行了应用程序

它为我工作。