2010-04-11 32 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中描述了这个错误的问题。