Der Code, den ich geschrieben habe, ist die Integration mit dem Webservice von Drittanbietern. Das Problem besteht darin, dass sich Soap-Aktionen für den Dienst in Test- und Produktionsumgebungen unterscheiden. Wenn diese URIs jedoch nicht wichtig sind, gibt der Host 400 zurück - falscher Anforderungsfehler, wenn der Soap-Aktions-URI falsch ist. Host-Service ist in Java geschrieben. Wir verwenden den C# -Webdienst-Proxy.Änderung der Soap-Aktion URI basierend auf der Umgebung
Reference.cs
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://1.1.1.1:9080/wss/Ping", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("PingResp", Namespace="http://namespace/data")]
public PingResp Ping([System.Xml.Serialization.XmlElementAttribute("PingReq", Namespace="http://namespace/data")] PingReq PingReq) {
object[] results = this.Invoke("Ping", new object[] {
PingReq});
return ((PingResp)(results[0]));
}
Für Produktionsumgebung ist Soapaction:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://2.2.2.2:9080/wss/Ping", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
Gibt es eine Möglichkeit, diese Dynamik zu machen heißt es möglich URI soap Aktion basierend auf Konfigurationseinstellung ändern?
Ich habe versucht, SoapDocumentMethodAttribute
Klasse zu erweitern, aber es ist versiegelt.