2011-10-13 78 views
0

我的WCF服務有各種返回整數,字符串,列表和流的方法。我想添加一個字符串或枚舉或???表示完成後的通話狀態。它可以像bool一樣簡單,表明成功或失敗。我還不確定。問題是,我該如何實現這一點?我應該在簽名中指定一個輸出參數嗎?有沒有更好的,更常用的方法來實現這一目標?我應該如何從我的WCF服務返回狀態?

更新1 如果發生異常,它將被處理,記錄等。想到的一個場景是當用戶提交沒有結果返回的內容時。例如,ZZ的狀態縮寫 將不會返回任何內容,但我仍然希望指示該方法已成功運行。

+0

要指示失敗,只需引發異常。如果您想添加更多關於失敗原因的信息,可以使用使用服務Fault:http://msdn.microsoft.com/en-us/library/ms732013.aspx。 –

回答

1

如果發生錯誤 - 返回SOAP錯誤 - 這很清楚。

現在,如果有什麼事情發生,或者如果你想以某種方式通知的狀態/行或某事的總數的用戶,最好的辦法是有一個包含所有信息的響應類:

[DataContract] 
public class YourMethodResponse 
{ 
    [DataMember] 
    public List<string> ActualResults; 

    [DataMember] 
    public int StatusOfOperation; 

    [DataMember] 
    public int TotalRowsUpdated; 
} 

或任何對你有意義的東西。

ThHen,而不是此操作

[OperationContract] 
public List<string> UpdateStrings(); 

只使用一個返回響應等級:

[OperationContract] 
public YourMethodResponse UpdateStrings(); 

這樣的話,你有一個清晰的界面,一切都很好,並妥善處理,你對於你想要返回的東西(標誌,枚舉,無論你想象什麼!)都有全面的靈活性。

+0

@ marc_s - 謝謝。我確實看到了這種方法的例子。我明確指出,因爲我的理解是這不適用於流。那是對的嗎?如果正確,你將如何處理相同的情況,但實際結果是以流的形式返回的? – DenaliHardtail

1

如果您希望指出的「狀態」是各種錯誤,那麼對於基於SOAP的服務,您應該使用SOAP Faults。