0
我有一個由傳統的客戶機上消耗WCF REST服務:WCF REST服務IErrorHandler
WebResponse response = request.GetResponse();
我想攔截出現在服務,並提供給客戶的任何錯誤。根據默認行爲,當服務中發生異常時會引發Faultexception並且通道出現故障,因此在客戶端上,我收到一個Bad請求。 我希望能夠返回客戶端stackstrace並覆蓋行爲不會錯誤的渠道。 對於我已經實現了IErrorHandler
public class ErrorHandler : IErrorHandler
{
public bool HandleError(Exception error)
{
return true;
}
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
fault = Message.CreateMessage(version, string.Empty, String.Format("An unknown error has occurred. The error identifier "), new DataContractJsonSerializer(typeof(string)));
fault.Properties.Add(WebBodyFormatMessageProperty.Name, new WebBodyFormatMessageProperty(WebContentFormat.Json));
fault.Properties.Add(HttpResponseMessageProperty.Name, HttpStatusCode.Accepted);
}
}
的問題是,即使我註冊此的服務,我可以調試的ErrorHandler,但渠道依然出現故障,所以我仍然收到客戶端錯誤請求。 我用下面的工廠爲客戶:
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
var host = base.CreateServiceHost(serviceType, baseAddresses);
ServiceEndpoint ep = host.AddServiceEndpoint(serviceType, new WebHttpBinding(), "");
host.Description.Endpoints[0].Behaviors.Add(new WebHttpBehavior { HelpEnabled = true });
return host;
}
的問題是我怎麼能防止在得到的ErrorHandler故障的通道。