2017-02-17 125 views
0

我有一個非常基本的WCF服務,它有一個名爲SaveSchoolName(string SchoolName)的方法,如果操作很好,它基本上返回爲布爾值True。 。 我添加了一個服務引用到我的客戶端應用程序,並在消費服務如下:C#WCF服務獲取狀態代碼

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

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

我想知道我怎麼確定的HTTP狀態代碼(200 - OK)的WCF服務調用。我試圖搜索,但似乎沒有提供任何關於如何能夠從調用該方法獲得響應頭的詳細信息。

回答

0

您需要爲此創建一個客戶端消息檢查器。

檢查下面的代碼...使其工作只需將檢查員添加到您的客戶端。順便說一句,這顯然只適用於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一起使用。至於如何調用它,您需要通過端點行爲在客戶端的ChannelFactory中添加消息檢查器。每當客戶端收到來自服務器的回覆時,它都會自動執行。 –

+0

有點困惑我在哪裏添加您提供的代碼。我正在使用代碼背後的Web服務。 –