2010-04-11 71 views
2

我試着去建立使用WCF和.NET 4的API,但是當我扔WebProtocolException,它不顯示它應該像一個不錯的錯誤信息,而不是它是治療它像一個未處理的異常。WCF .NET 4.0的治療WebProtocolException作爲未處理的異常

我正在使用WebServiceHost2Factory。

是否有其他人使用過.net 4的WebProtocolException?

我的電話的下面是一個例子

throw new WebProtocolException(System.Net.HttpStatusCode.BadRequest, "The DateFrom parameter is invalid", 
new Error() 
{ 
    Code = 6002, 
    Message = "Please ensure your dates are in the following format: yyyy/MM/dd hh:mm:ss" 
}, 
null, null); 

回答

1

我有同樣的問題,升級後我REST風格的項目在Visual Studio 2010中作爲一種變通方法我必須要麼:

  • 刪除「高速緩存控制「從傳出響應頭中的關於 WebOperationContext.Current.OutgoingResponse.Headers.Remove(HttpResponseHeader.CacheControl);

    WebOperationContext.Current.OutgoingResponse.Headers.Remove( 「緩存控制」); 之前投擲WebProtocolException異常

  • 明確設置在相對於 WebOperationContext.Current.OutgoingResponse.StatusCode =的StatusCode的出響應狀態代碼; 扔WebProtocolException(的StatusCode,...)異常

在正常情況下,前 「扔WebProtocolException(的StatusCode,...);」應該設置外出響應的狀態碼,但是如果定義了「緩存控制」,它將不會被設置。我在大多數響應中使用「Cache-Control」設置爲「max-age = 0」以確保所有AJAX請求都將設置爲服務器。所以我在WebProtocolException中描述了這個錯誤的問題。