¿Cómo resolver esta excepción InvalidCastException al aplicar ClientCertificate a WCF DataService Client?

He usado los ejemplos enEste artículo para agregar autenticación de certificado de cliente a mi servicio de datos WCF. Tuve que cambiar el ejemplo ligeramente porque estoy usando WCF DataService 5.6 en el que elSendingRequest evento ha sido desaprobado y reemplazado porSendingRequest2.

Básicamente esto significó cambiar el siguiente controlador de eventos:

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

A:

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

Esto parece funcionar. Sin embargo ahora me sale lo siguienteInvalidCastException en algunas acciones:

System.InvalidCastException: no se puede convertir el objeto de tipo 'System.Data.Services.Client.InternalODataRequestMessage' para escribir 'System.Data.Services.Client.HttpWebRequestMessage'.

No he podido identificar con 100% de precisión cuáles son estas acciones, pero parece ser coherente con el método SaveChanges (vea stacktrace a continuación :)

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)

Llegué a la modificación deSendingRequest aSendingRequest2 Por prueba y error, me pregunto si pasé por alto algo allí. ¿O es esto sin relación alguna y debería agregar un&& args.RequestMessage is HttpWebRequestMessage a la sentencia if en el controlador?

Respuestas a la pregunta(2)

Su respuesta a la pregunta