Wie die Umsetzung SOAP-Dienst auf WebAPI

Wir haben einen server, der verschiedene Arten von api (für benutzerdefinierte XML-API auf Basis der httplistener, SOAP-API, basierend auf WCF und REST-API basiert auf dem WEB-API). Wir wollen bewegen sich alle API, um WEB-API (es gibt viele Gründe) und es sollte abwärts kompatibel.

Einer der Gründe zur Unterstützung der url-Struktur: Dienstleistungen/service1. Dienstleistungen/service2. Und in diesem Fall sollte es an einem port. Es ist eine intranet Anwendung, die verteilt sich auf mehrere Kunden und es sollte einfach zu implementieren, zu installieren. So, wir kann nicht haben eine lange Konfiguration auf Kundenseite (proxing und otherts).

Gibt es einfach Weg für die Umsetzung SOAP-Dienst auf der web-api? Auf den ersten Blick sollte leicht sein, Wege zu analysieren, httprequest, um typisierte soap-Umschlag (basierend auf Vertrag existierte) und serialisieren einer Antwort. Natürlich gibt es viele Aktionen und Datentypen im Vertrag.

PS: ich will nicht schauen Sie in servicestack:)

Update:

Das problem, das ich oben beschrieben behoben werden kann, indem proxing http-Anfrage soap-service (Es kann nur mit "basichttpbinding" ohne Sicherheit. Wenn der WCF-Dienst benötigen NTLM Authentifizierung funktioniert es nicht):

[HttpPost]
public async Task<IHttpActionResult> SoapAction()
{
    var httpClient = new HttpClient();

    var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "http://localhost:8111/soap")
    {
        Content = this.Request.Content
    };

    foreach (var header in this.Request.Headers)
    {
        httpRequestMessage.Headers.Add(header.Key, header.Value);
    }

    var responseMessage= await httpClient.SendAsync(httpRequestMessage).ConfigureAwait(false);

    return ResponseMessage(responseMessage);
}

Aber ich will immer noch wissen, gibt es irgendwelche SOAP-parser in C#, weil mein server unterstützt die NTLM-Authentifizierung.

InformationsquelleAutor Andection | 2016-11-30
Schreibe einen Kommentar