Frage

Ich habe einen Verkäufer mir zu sagen, dass die SOAP-Header nicht in ihm https sollten, sondern dass wir noch über SSL kommunizieren können. Unser Anliegen ist es, dass wir über SSL und dass ihre Beispielcode kommunizieren möchten, so dass es nicht geschehen.

In ihrem Beispielprogramm geben sie diesen Code:

    if (valservice.Url.StartsWith("https"))
    {
        valservice.Destination = new Microsoft.Web.Services3.Addressing.EndpointReference(
            new Uri(valservice.Url.Replace("https:", "http:")));
    } 

es bricht in kleinere Stufen hinunter, und das Hinzufügen einiger Debug, so scheint es, dass, wenn Sie das Ziel ändern, dass die URL automatisch ändert.

if (valservice.Url.StartsWith("https"))
{
    // fix the endpoint just in case (usually not necessary)
    //original code is just this next line 
    //valservice.Destination = new Microsoft.Web.Services3.Addressing.EndpointReference(
    //    new Uri(valservice.Url.Replace("https:", "http:")));


    //test code 
    string holdOriginalURL = valservice.Url;

    Response.WriteLine("1 URL=" + valservice.Url);
    Response.WriteLine("1 Destination=" + valservice.Destination);
    Response.WriteLine("1 Destination.Address.Value=" + valservice.Destination.Address.Value);
    Response.WriteLine("1 Destination.TransportAddress=" + valservice.Destination.TransportAddress);

    //test 
    string newURL = valservice.Url;
    newURL = newURL.Replace("https:", "http:"); 
    //valservice.Destination = new Microsoft.Web.Services3.Addressing.EndpointReference(
    //    new Uri(newURL));
    Microsoft.Web.Services3.Addressing.EndpointReference tempEndPoint = new Uri(newURL);
    valservice.Destination = tempEndPoint; 
    //valservice.Url = holdOriginalURL; 
    Response.WriteLine("2 URL=" + valservice.Url);
    Response.WriteLine("2 Destination=" + valservice.Destination);
    Response.WriteLine("2 Destination.Address.Value =" + valservice.Destination.Address.Value);
    Response.WriteLine("2 Destination.TransportAddress=" + valservice.Destination.TransportAddress);
}

Ausgabe:

1 URL=https://someaddress.net/orgid/SomeApplication/SomeService.asmx
1 Destination.Address.Value=https://someaddress.net/orgid/SomeApplication/SomeService.asmx
1 Destination.TransportAddress=https://someaddress.net/orgid/SomeApplication/SomeService.asmx

2 URL=http://someaddress.net/orgid/SomeApplication/SomeService.asmx
2 Destination.Address.Value=http://someaddress.net/orgid/SomeApplication/SomeService.asmx
2 Destination.TransportAddress=http://someaddress.net/orgid/SomeApplication/SomeService.asmx

Frage: Ist es möglich, eine andere URL im Ziel als die URL zu haben? Wenn das so ist, wie?

Auch wenn ich die URL nach der Aktualisierung des Ziel zurückgesetzt, das Ziel wird ebenfalls geändert. Scheint, wie die beiden irgendwie miteinander verbunden und nicht anders sein können?

Danke,

Neal Walters

Update 1: Einige Untersuchungen zeigen, dass sich der Anbieter in der Lage könnte die SoapActor Attribut , um ihre Website hinzuzufügen.

Wenn wir https in der URL haben, geben sie diesen Fehler:

  

Der Header muss das Match   Schauspieler URI-Wert des Web-Service.   Der Schauspieler URI-Wert kann explizit sein   mit SoapActorAttribute angegeben auf   die ASMX-Klasse. In Abwesenheit von der   Attribut wird der Schauspieler URI angenommen   gleich die HTTP-Request-URL   die eingehende Nachricht. der Header   erhielt enthalten   " https://somesite.net/orgid/SomeApp/SomeService.asmx "   während der Empfänger erwartet   " http://somesite.net/orgid/SomeApp/SomeService.asmx ".

War es hilfreich?

Lösung

Die Probe des Herstellers war in der Tat falsch und nicht SSL. Die Lösung war die „VIA“ Parameter an den Konstruktor des Endpunkts hinzuzufügen:

 valservice.Destination =
            new Microsoft.Web.Services3.Addressing.EndpointReference(
                new Uri(valservice.Url.Replace("https:", "http:")), 
                new Uri(valservice.Url));

http: // msdn .microsoft.com / en-us / library / microsoft.web.services3.addressing.endpointreference.via.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top