Ok, quindi sto ospitando un servizio WCF all'interno di un'applicazione console.Il servizio WCF auto-ospitato funziona con HTTP non con HTTPS
tutti i collegamenti vengono creati in modo programmatico, quindi nessuna impostazione di configurazione.
Ho un servizio di lavoro finché io uso HttpTransportBindingElement
però, non appena io uso HttpsTransportBindingElement
poi niente funziona, il servizio non viene visualizzato all'interno del browser e l'applicazione client restituisce un 405 (Method Not Allowed) CommunicationException
Ho provato a fissare un SecurityBindingElement
al mio CustomBinding
ma non sono sicuro di quale opzione dovrei utilizzare.
SecurityBindingElement.CreateCertificateOverTransportBindingElement()
SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
ecc
Il codice per la creazione del host è sotto
baseAddress = new Uri(string.Format("{0}://{1}", strConnectionType, ConfigurationManager.AppSettings["baseAddress"]));
ServiceHost host = new ServiceHost(typeof(IMyService), baseAddress);
host.AddServiceEndpoint(typeof(MyService), binding, String.Empty);
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpsGetEnabled = certificate != null;
smb.HttpGetEnabled = certificate == null;
host.Description.Behaviors.Add(smb);
ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
if (sdb == null)
{
host.Description.Behaviors.Add(new ServiceDebugBehavior() { IncludeExceptionDetailInFaults = true });
}
else
{
if (!sdb.IncludeExceptionDetailInFaults)
{
sdb.IncludeExceptionDetailInFaults = true;
}
}
if (certificate != null)
{
host.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, certificate.Thumbprint);
}
Che cos'è il 'binding'? Anche la configurazione programmatica dei servizi WCF è dannatamente dura, perché non usare il file di configurazione? –
@ ta.speot.is potresti approfondire la tua domanda? –
@ shankar-damodaran grazie per il montaggio :) –