Cabeçalho HTTP do tamanho do conteúdo do WCF na mensagem de saída

Eu estou em uma situação difícil em que um endpoint de serviço da Web Java hospedado em um IBM HTTP Server (IHS) requer um cabeçalho Content-Length, embora ele supostamente esteja em conformidade com o HTTP / 1.1. Se eu enviar o cabeçalho, tudo funciona. Se eu deixá-lo, recebo uma resposta de erro 500 informando-me que meu corpo de entidade POST estava vazio (mesmo que não estivesse).

Investimos um tempo significativo em nosso cliente WCF para esses serviços (desenvolvidos por terceiros) e não consigo encontrar uma boa maneira de anexar um cabeçalho Content-Length à solicitação. Eu sou capaz de adicionar cabeçalhos arbitrários (ou seja, X-Dan-Lynn-Header) para o pedido usando um IClientMessageInspector como descrito emposts como este, mas o WCF parece ignorar um cabeçalho Content-Length.

Minhas opções são:

a) descobrir como forçar o WCF a anexar um cabeçalho Content-Length à solicitação HTTP POST ou,

b) localize ou escreva um proxy HTTP extremamente simples, mas transparente, que decora a solicitação com um cabeçalho Content-Length.

Obrigado!

Amostra 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;
}

Pedido de amostra gerado pelo WCF (e pelo IClientMessageInspector anterior):
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