J’ai besoin d’append par programme un site IIS 7.x et je me suis retrouvé bloqué lorsqu’il a été créé avec une liaison HTTPS / SSL par défaut, surcharge SiteCollection.Add (chaîne, chaîne, chaîne, octet []) .
Donner https:*:80:test.localhost
https:*:443:test.localhost
tant que bindingInformation lève une exception ArgumentException avec ce message: La liaison HTTPS spécifiée n’est pas valide.
Quel est le problème dans cette information contraignante?
Je vous remercie.
EDIT : J’utilise l’assemblage Microsoft.Web.Administration.
Voici ce que j’ai fait pour créer un site https et cela a fonctionné. Je saute des parties de code ici, bien sûr.
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 certificatee'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: le certificate est créé à partir d’un fichier pfx de la manière suivante:
// get certificatee from the file ssortingng pfx = Directory.GetFiles(folder, "*.pfx", SearchOption.AllDirectories).FirstOrDefault(); var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine); store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite); var certificatee = new X509Certificate2(pfx, certPassword, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet); store.Add(certificatee); store.Close(); certHash = certificatee.GetCertHash();
Autant que je BindingInformation
est sans protocole:
La valeur de cette propriété est une chaîne délimitée par des deux-points qui inclut l’adresse IP, le port et le nom d’hôte de la liaison.
Il y a aussi une surcharge de qui prend un paramètre BindingProtocol:
public Site Add( ssortingng name, ssortingng bindingProtocol, ssortingng bindingInformation, ssortingng physicalPath )
Source: http://msdn.microsoft.com/en-us/library/bb359364%28v=vs.90%29.aspx
Peut-être devriez-vous utiliser l’object Binding proposé par l’instance de site tel quel offre davantage de parameters que l’instance de SiteCollection.