2012-07-31 163 views
2

我有一個WCF REST服務,其接口方法註釋爲[WebGet(..., ResponseFormat = WebMessageFormat.Json)],通常提供JSON格式的響應。眼下代碼指示錯誤:更改內容類型WebFaultException

throw new WebFaultException<string>("helpful message",HttpStatusCode.BadRequest); 

的問題是,在響應中的Content-Type是仍然application/json即使身體只是普通的文本,而不是JSON編碼。我可以幫助生成我的故障異常,它將設置WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";,但是如果在WCF層中有一個快速修復方法,可以爲這些類型的異常設置內容類型,這將是更可取的。最乾淨的方法是什麼?

回答

0

您可以繼承WebFaultException並在您的項目中使用它。

public class MyWebFaultException<T>:WebFaultException<T> 
{ 
    public MyWebFaultException(T message) 
     : base(message, HttpStatusCode.BadRequest) 
    { 
     WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain"; 
    } 
} 
+0

這大約相當於輔助方法的方法。我希望找到一種乾淨的方法將其掛接到WCF堆棧中,以便即使有人錯過了備忘錄並拋出基礎WebFaultException類,也會正確設置內容類型。 看起來好像有一種方法,如果我重寫網絡行爲的'AddServerErrorHandlers',但它變得非常快。確保所有的引用使用自定義的異常類型或輔助方法會比我在那裏得到的更好。儘管如此,仍然希望有一個很好的回答:-) – jtb 2012-07-31 04:49:37