WCF Content-Length Nagłówek HTTP w wiadomości wychodzącej

Jestem w trudnej sytuacji, w której punkt końcowy usługi WWW Java obsługiwany na serwerze IBM HTTP Server (IHS) wymaga nagłówka Content-Length, chociaż podobno jest zgodny z HTTP / 1.1. Jeśli wyślę nagłówek, wszystko działa. Jeśli zostawiam to, otrzymuję odpowiedź o błędzie 500 informującą mnie, że moja treść jednostki POST była pusta (nawet jeśli tak nie było).

Dużo czasu poświęciliśmy naszemu klientowi WCF na te usługi (opracowanemu przez stronę trzecią) i nie mogę znaleźć dobrego sposobu dołączenia nagłówka Content-Length do żądania. Jestem w stanie dodać dowolne nagłówki (tj. X-Dan-Lynn-Header) do żądania za pomocą IClientMessageInspector, jak opisano wposty na blogu takie jak ten, ale WCF wydaje się ignorować nagłówek Content-Length.

Moje opcje to:

a) dowiedzieć się, jak zmusić WCF do dołączenia nagłówka Content-Length do żądania HTTP POST lub,

b) znajdź lub napisz wyjątkowo prosty, ale przezroczysty serwer proxy HTTP, który ozdobi żądanie nagłówkiem Content-Length.

Dzięki!

Przykładowy IClientMessageInspector.BeforeSendRequest:

public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
    var buffer = request.CreateBufferedCopy(Int32.MaxValue);
    var tempRequest = buffer.CreateMessage();


    HttpRequestMessageProperty httpRequest = GetHttpRequestProp(tempRequest);
    if (httpRequest != null)
    {
        if (string.IsNullOrEmpty(httpRequest.Headers[HttpRequestHeader.ContentLength]))
        {
            httpRequest.Headers.Add(HttpRequestHeader.ContentLength, GetMessageLength(buffer).ToString());
            httpRequest.Headers.Add("X-Dan-Lynn-Header", "abcdefghijk");
        }

    }

    request = tempRequest;
    request.Properties[HttpRequestMessageProperty.Name] = httpRequest;

    return null;
}

Przykładowe żądanie wygenerowane przez WCF (i poprzedni IClientMessageInspector):
POST /path/to/service HTTP/1.1
Content-Type: text/xml; charset=utf-8
X-Dan-Lynn-Header: abcdefghijk
SOAPAction: "http://tempuri.org/path/to/service/action"
Host: service.host.tld
Transfer-Encoding: chunked
Connection: Keep-Alive


<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        .......body removed for clarity......

    </s:Body>
</s:Envelope>

questionAnswers(3)

yourAnswerToTheQuestion