Обработка ошибок службы WCF Rest и WebChannelFactory

Насколько я понимаю, следующее должно правильно вызывать пользовательскую ошибку из службы WCF Rest:

[DataContract(Namespace = "")]
public class ErrorHandler
{
    [DataMember]
    public int errorCode { get; set; }

    [DataMember]
    public string errorMessage { get; set; }
} // End of ErrorHandler

public class Implementation : ISomeInterface
{
    public string SomeMethod()
    {
        throw new WebFaultException<ErrorHandler>(new ErrorHandler()
        {
            errorCode = 5,
            errorMessage = "Something failed"
        }, System.Net.HttpStatusCode.BadRequest);
    }
}

В Fiddler это, кажется, работает, я получаю следующие необработанные данные:

HTTP/1.1 400 Bad Request
Cache-Control: private
Content-Length: 145
Content-Type: application/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Set-Cookie: ASP.NET_SessionId=gwsy212sbjfxdfzslgyrmli1; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Thu, 03 May 2012 17:49:14 GMT

<ErrorHandler xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><errorCode>5</errorCode><errorMessage>Something failed</errorMessage></ErrorHandler>

Но теперь на моей стороне клиента у меня есть следующий код:

WebChannelFactory<ISomeInterface> client = new WebChannelFactory<ISomeInterface>(new Uri(targetHost));

ISomeInterface someInterface = client.CreateChannel();
try
{
  var result = someInterface.SomeMethod();
}
catch(Exception ex)
{
   // Try to examine the ErrorHandler to get additional details.
}

Теперь, когда код запускается, он попадает в ловушку и представляет собой System.ServiceModel.ProtocolExceptionс сообщением «Удаленный сервер вернул неожиданный ответ:(400 )Неверный запрос. '. Кажется, на данный момент у меня нет возможности увидеть подробности ErrorHandler. Кто-нибудь сталкивался с этим? Есть ли способ получить информацию об ErrorHander на данный момент?

5
задан Kyle 3 May 2012 в 18:04
поделиться