使用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
相关产品推荐
相关产品推荐

