You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ServerManager动态创建网站时遇「指定HTTPS绑定无效」异常求助

问题原因及解决方案

异常「the specified https binding is invalid」的核心原因是:你在代码中设置了site.ApplicationDefaults.EnabledProtocols = "http,https";,启用了HTTPS协议,但只通过Sites.Add添加了HTTP绑定,没有配置对应的HTTPS绑定信息(HTTPS需要关联SSL证书、指定端口等),导致IIS在提交配置时验证失败。

解决方式分两种情况:

情况1:不需要启用HTTPS

直接将EnabledProtocols的值改为仅"http",修改后代码如下:

using(var serverManager = new ServerManager())
{
      string path = @"C:\\inetpub\\ppapi\\";
      if (!System.IO.Directory.Exists(path))
      {
          System.IO.Directory.CreateDirectory(path);
      }
      var site = serverManager.Sites.Add("PaintPartnerAPI", "http", "localhost:8080", path);
      serverManager.ApplicationPools.Add("PPApplicationPool");
      serverManager.Sites["PaintPartnerAPI"].Applications[0].ApplicationPoolName = "PPApplicationPool";
      ApplicationPool apppool = serverManager.ApplicationPools["PPApplicationPool"];
      apppool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
      // 仅启用HTTP协议
      site.ApplicationDefaults.EnabledProtocols = "http";
      serverManager.CommitChanges();
      apppool.Recycle(); 
}

情况2:需要启用HTTPS

如果确实需要HTTPS,必须添加对应的HTTPS绑定,并关联有效的SSL证书。你需要先获取证书的哈希值(可以从IIS管理器或通过代码查询本地证书存储),然后手动添加HTTPS绑定:

using(var serverManager = new ServerManager())
{
      string path = @"C:\\inetpub\\ppapi\\";
      if (!System.IO.Directory.Exists(path))
      {
          System.IO.Directory.CreateDirectory(path);
      }
      var site = serverManager.Sites.Add("PaintPartnerAPI", "http", "localhost:8080", path);
      
      // 添加HTTPS绑定:替换证书哈希和端口为实际值
      string sslCertHash = "你的SSL证书指纹(去掉空格的十六进制字符串)";
      site.Bindings.Add("*:443:", sslCertHash);
      
      serverManager.ApplicationPools.Add("PPApplicationPool");
      serverManager.Sites["PaintPartnerAPI"].Applications[0].ApplicationPoolName = "PPApplicationPool";
      ApplicationPool apppool = serverManager.ApplicationPools["PPApplicationPool"];
      apppool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
      // 启用HTTP和HTTPS协议
      site.ApplicationDefaults.EnabledProtocols = "http,https";
      serverManager.CommitChanges();
      apppool.Recycle(); 
}

注意:证书哈希必须是本地计算机「个人」证书存储中已存在的SSL证书的指纹(需去掉指纹中的空格,保留纯十六进制字符串);端口443是默认HTTPS端口,也可指定其他未被占用的端口。

内容的提问来源于stack exchange,提问作者Basharat Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:42:54