IIS 7.x,添加启用HTTPS的站点:SiteCollection.Add(string,string,string,byte )重载

我需要以编程方式添加一个IIS 7.x站点,当我应该使用HTTPS / SSL绑定创建默认情况下,usig SiteCollection.Add(string,string,string,byte [])重载时,我会陷入困境。

https:*:80:test.localhost https:*:443:test.localhost作为bindingInformation引发带有此消息的ArgumentException: 指定的HTTPS绑定无效。

这个绑定信息有什么问题?

谢谢。

编辑我正在使用Microsoft.Web.Administration程序集。

以下是我创建https网站所做的工作。 当然,我在这里跳过部分代码。

 using Microsoft.Web.Administration ... using(var manager = new ServerManager()) { // variables are set in advance... var site = manager.Sites.Add(siteName, siteFolder, siteConfig.Port); var store = new X509Store(StoreName.AuthRoot, StoreLocation.LocalMachine); store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite); // certHash is my certificate's hash, byte[] var binding = site.Bindings.Add("*:443:", certHash, store.Name); binding.Protocol = "https"; store.Close(); site.ApplicationDefaults.EnabledProtocols = "http,https"; manager.CommitChanges(); } 

UPD:证书是通过以下方式从pfx文件创建的:

 // get certificate from the file string pfx = Directory.GetFiles(folder, "*.pfx", SearchOption.AllDirectories).FirstOrDefault(); var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine); store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite); var certificate = new X509Certificate2(pfx, certPassword, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet); store.Add(certificate); store.Close(); certHash = certificate.GetCertHash(); 

据我所知, BindingInformation没有协议:

此属性的值是以冒号分隔的字符串,其中包含绑定的IP地址,端口和主机名。

来源: http : //msdn.microsoft.com/en-us/library/microsoft.web.administration.binding.bindinginformation%28v=vs.90%29.aspx

还有一个带参数BindingProtocol的重载:

 public Site Add( string name, string bindingProtocol, string bindingInformation, string physicalPath ) 

来源: http : //msdn.microsoft.com/en-us/library/bb359364%28v=vs.90%29.aspx

也许你应该使用Site实例提供的Binding对象,因为它提供了比SiteCollection实例更多的设置。