WCF BasicHttpBinding: ProxyAddress und UseDefaultWebProxy
Bringen Sie die explizite Proxyadresse von BasicHttpBinding und die Auswahl des Standardproxys in Einklang, bevor Sie Transport-Anmeldeinformationen ändern.
Ein generierter Dienstclient kann sowohl einen Dienstendpunkt als auch proxybezogene Bindungseinstellungen besitzen. Ermitteln Sie zunächst, welche Adresse zu welcher Rolle gehört. Der SOAP-Dienst bleibt das Ziel; ProxyAddress benennt einen Vermittler.
Für BasicHttpBinding wählt UseDefaultWebProxy das automatisch konfigurierte Proxyverhalten und ist standardmäßig true. Der Vertrag von Microsoft unterstützt nicht die Kombination dieses true-Werts mit einer nicht-null expliziten ProxyAddress. Treffen Sie die Wahl widerspruchsfrei, statt beides zuzuweisen und anzunehmen, dass eines stillschweigend gewinnt. Für einen öffentlich erreichbaren SOAP-Dienst auf einer zulässigen nicht authentifizierten öffentlichen Proxyroute liefert die HTTP-Proxy-Liste Kandidatenadressen für ProxyAddress; behalten Sie keine Proxy-Anmeldeinformationen von einem anderen Endpunkt.
Prüfen Sie die Bindung, die der Endpunkt tatsächlich verwendet
Eine Hilfsmethode kann die richtige Bindung erstellen, während der generierte Client weiterhin einen anderen konfigurierten Endpunkt verwendet. Untersuchen Sie die Bindung, die dem fehlschlagenden Aufruf zugewiesen ist. Das Ändern eines Konfigurationseintrags, den der Client nie ausgewählt hat, kann seine Route nicht beeinflussen.
Unterscheiden Sie anschließend den Typ der Proxy-Anmeldeinformationen vom Typ der Dienstanmeldeinformationen. Ein vom SOAP-Dienst verlangtes Kennwort ist nicht automatisch ein Konto für den ausgewählten Netzwerkvermittler.
Der Transportsicherheitsmodus ist eine weitere Entscheidung. Der Wechsel in einen reinen Anmeldedatenmodus nur deshalb, weil eine alte Antwort ihn nahelegt, verändert die Transportannahmen; er beweist nicht, dass Route oder Konto korrekt sind. Behalten Sie das beabsichtigte TLS des Ziels bei und verwenden Sie die Authentifizierungsanordnung, die der bereitgestellte WCF-Client und der Proxy unterstützen.
Eine nützliche Diagnose benennt den Dienstendpunkt, die gewählte Proxyquelle, die Bindungsinstanz und die erste Antwortstufe. Das grenzt einen 407 ein, ohne einen generierten Dienstclient in eine Sammlung unzusammenhängender Konfigurationsvermutungen zu verwandeln.