Получить ответ об отдыхе WCF в клиенте - PullRequest
2 голосов
/ 10 ноября 2011

Я использую WebChannelFactory <> для создания канала и взаимодействия со службой REST WCF.

При возникновении ошибки я хочу получить ответ из канала, чтобы прочитать сообщение об ошибке из тела ответа. Но я не могу понять, как получить поток ответов.

Вот мой код:

using (var cf = new WebChannelFactory<T>(new Uri(url)))
{
    var channel = cf.CreateChannel();

    using (new OperationContextScope(channel as IContextChannel))
    {
        WebOperationContext.Current.OutgoingRequest.Headers
        .Add("x-st-authtoken", HttpUtility.UrlDecode(Constants.General_AuthorizedToken));

        WebOperationContext.Current.OutgoingRequest.Headers
        .Add("x-st-tesskey", HttpUtility.UrlDecode(Constants.General_SessionKey));
        try
        {
            a(channel);
        }
        catch (Exception ex)
        {
            throw new Exception("Status: " + ((int)WebOperationContext.Current.IncomingResponse.StatusCode).ToString());
        }
    }
}

В операторе catch я хочу включить данные из тела ответа ...

Это кажется очевидной вещью, но я не могу найти какую-либо информацию в Интернете или что-либо еще.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

Существует ли какая-либо конкретная причина для использования ChannelFactory для взаимодействия со службой REST. Я думаю, что проще использовать объект HttpWebRequest для вызова службы REST, и там вы можете получить ответный поток при возникновении ошибки на сервере.

Также ознакомьтесь с API RestSharp, с помощью которого вы можете выполнить задачу по чтению потока ответов.

0 голосов
/ 10 ноября 2011

Я верю, что это вызовет WebException .

поэтому, если вы явно перехватываете этот тип, вы можете использовать свойство WebException.Response (которое является HttpWebReponse) в исключении, и вы можете получить содержимое из его потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...