erstellen Ich möchte meine aktuellen HTTP/HTTPS WCF Bindungseinstellungen zu binäre Nachrichtencodierung konvertieren, und ich muss es in Code tun - nicht in XML Aufbau. AFAIK ist es notwendig, ein CustomBinding-Objekt zu erstellen und geeignete BindingElements zu setzen, aber ich kann nicht herausfinden, welche Elemente ich in meinem Szenario verwenden soll.WCF - wie programmatisch benutzerdefinierte Bindung mit Binärcodierung über HTTP (S)
Hauptpunkte in meiner WCF-Konfiguration sind:
- Verwendung HTTP- oder HTTPS-Verkehr je nach Konfiguration (in app.config)
- Verwendung Benutzername Nachrichtensicherheit
- todo: statt Standard binäre Codierung hinzufügen Text
Mein aktueller Code für die Bindung oben (Arbeits, aber ohne die binäre Codierung) Einstellung:
var isHttps = Settings.Default.wcfServiceBaseAddress.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase);
var binding = new WSHttpBinding(isHttps ? SecurityMode.TransportWithMessageCredential : SecurityMode.Message);
binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
ich diesen Code versuchte, aber es funktioniert nicht - ich weiß nicht, wie für Benutzernamen Nachrichtensicherheit Nachricht Sicherheitselement setzen:
var custBinding = new CustomBinding();
custBinding.Elements.Add(new BinaryMessageEncodingBindingElement());
//Transport Security (Not Required)
if (isHttps)
{
custBinding.Elements.Add(SecurityBindingElement.CreateUserNameForSslBindingElement());
}
//Transport (Required)
custBinding.Elements.Add(isHttps ?
new HttpsTransportBindingElement() :
new HttpTransportBindingElement());
Wer weiß, wie dies einzurichten? Ich habe versucht, für ähnliches Problem/Lösung zu suchen, aber nicht gelungen ...
ich dies bereits versucht, , aber es funktioniert nicht. Auch wenn isHttps == false gibt es keine Nachrichtensicherheit Setup - das ist das Hauptproblem. Ich weiß nicht, wie WSHttpBinding-kompatible Nachrichtensicherheit mit CustomBinding eingerichtet wird. – Buthrakaur
Aus Sicherheitsgründen lässt WCF nur zu, dass Benutzername/Passwort-Kombinationen gesendet werden, wenn die Verbindung verschlüsselt ist - dh wenn Sie den HTTP-Transport verwenden. Dies bedeutet, dass Sie Ihre Nachrichten nicht auf diese Weise sichern können, wenn Sie keine HTTPS verwenden. Möglicherweise müssen Sie Ihre Anforderungen neu bewerten. –