2017-02-17 2 views
0

У меня есть очень простой сервис WCF, который имеет метод с именем SaveSchoolName(string SchoolName), который в основном возвращает в качестве логического значения True, если операция хороша. . Я добавил ссылку на службу к моему клиентскому приложению и потребляет услугу следующим образом:C# WCF Service Получить код состояния

MyService.WebServicesClient svc = new MyService.WebServicesClient(); 
bool dataSaved = false; 
dataSaved = svc.SaveSchoolName("School Name"); 

if(dataSaved){ 
    // do something. 
} 
else{ 
    // log not saved. 
} 

Я хочу знать, как определить код Http Status (200 - OK) для вызова службы WCF. Я попытался выполнить поиск, но ни один из них не дает подробной информации о том, как я могу получить заголовки ответов от вызова метода.

ответ

0

Для этого вам необходимо создать инспектор сообщений клиента.

Проверьте приведенный ниже код ... чтобы он работал, просто добавьте инспектора к вашему клиенту. BTW, очевидно, это работает только для HTTP :)

public class HttpStatusCodeMessageInspector : IClientMessageInspector 
{ 
    public void AfterReceiveReply(ref Message reply, object correlationState) 
    { 
     if (reply.Properties.ContainsKey(HttpResponseMessageProperty.Name)) 
     { 
      var httpResponseProperty = (HttpResponseMessageProperty)reply.Properties[HttpResponseMessageProperty.Name]; 
      Console.WriteLine($"Response status is {(int)httpResponseProperty.StatusCode}"); 
     } 
    } 

    public object BeforeSendRequest(ref Message request, IClientChannel channel) 
    { 
     return null; 
    } 
} 
+0

Когда вы упомянули об этом, он работает только для HTTP, вы хотите сказать, что это не сработает для HTTPS? Кроме того, где я могу вызвать этот инспектор сообщений? –

+0

Нет, я имел в виду HTTP-протокол, то есть он будет работать с HTTP/HTTPS/WebSockets. Что касается того, как вы его вызываете, вам нужно добавить инспектор сообщений в свой клиентский каналFactory с помощью поведения конечной точки. Это будет автоматически выполняться каждый раз, когда клиент получает ответ от сервера. –

+0

Немного смущен, где бы я добавил код, который вы предоставили. Я практически потребляю веб-сервис из кода. –