Jak rozwiązać ten wyjątek InvalidCastException podczas stosowania ClientCertificate do klienta WCF DataService?

Użyłem przykładów wTen artykuł dodać uwierzytelnianie certyfikatu klienta do mojej usługi danych WCF. Musiałem nieco zmienić przykład, ponieważ używam WCF DataService 5.6, w którymSendingRequest zdarzenie zostało zaniechane i zastąpione przezSendingRequest2.

Zasadniczo oznaczało to zmianę następującej obsługi zdarzeń:

private void OnSendingRequest_AddCertificate(object sender, SendingRequestEventArgs args)
{
    if (null != ClientCertificate)
    {
        ((HttpWebRequest)args.Request).ClientCertificates.Add(ClientCertificate);
    }
}

Do:

private void OnSendingRequest_AddCertificate(object sender, SendingRequest2EventArgs args)
{
    if (null != ClientCertificate)
    {
        ((HttpWebRequestMessage)args.RequestMessage).HttpWebRequest.ClientCertificates.Add(ClientCertificate);
    }
}

To wydaje się działać. Jednak teraz otrzymuję następujące informacjeInvalidCastException na niektóre działania:

System.InvalidCastException: Nie można rzutować obiektu typu „System.Data.Services.Client.InternalODataRequestMessage”, aby wpisać „System.Data.Services.Client.HttpWebRequestMessage”.

Nie byłem w stanie zidentyfikować z 100% dokładnością, jakie to są działania, ale wydaje się, że konsekwentnie w metodzie SaveChanges (patrz poniżej stacktrace :)

at MyNamespace.MyContainer.OnSendingRequest_AddCertificate(Object sender, SendingRequest2EventArgs args)
at System.Data.Services.Client.ODataRequestMessageWrapper.FireSendingRequest2(Descriptor descriptor)
at System.Data.Services.Client.BatchSaveResult.GenerateBatchRequest()
at System.Data.Services.Client.BatchSaveResult.BatchRequest()
at System.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions options)

Doszedłem do modyfikacji odSendingRequest doSendingRequest2 metodą prób i błędów, więc zastanawiam się, czy coś tam nie przeoczyłem. Albo czy jest to całkowicie niepowiązane i powinienem po prostu dodać&& args.RequestMessage is HttpWebRequestMessage do instrukcji if w programie obsługi?

questionAnswers(2)

yourAnswerToTheQuestion