Dobrze, więc obsługuję usługę WCF w aplikacji konsolowej.Samohostowana usługa WCF działa z protokołem HTTP nie z HTTPS
wszystkie wiązania są tworzone programowo, więc nie ma ustawień konfiguracyjnych.
Mam usługi pracy tak długo, jak używać HttpTransportBindingElement
jednak tak szybko, jak używam HttpsTransportBindingElement
wtedy nic nie działa, usługa nie wyświetla się w przeglądarce i aplikacji klient zwraca 405 (Method Not Allowed) CommunicationException
Próbowałem ustawienie SecurityBindingElement
do mojego CustomBinding
, ale nie jestem pewien, której opcji powinienem użyć.
SecurityBindingElement.CreateCertificateOverTransportBindingElement()
SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
itp
Kod do tworzenia przyjmującego jest poniżej
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);
}
Co to jest "wiążące"? Również programowa konfiguracja usług WCF jest cholernie trudna, dlaczego nie skorzystać z pliku konfiguracyjnego? –
@ ta.speot.jestbyś w stanie rozwinąć więcej na swoje pytanie? –
@ shankar-damodaran dzięki za edycję :) –