2010-05-11 56 views
0

我正在通过我们的所有应用程序构建一组供内部使用的WCF服务。对于异常处理,我创建了一个默认的错误类,以便我可以将处理的消息返回给调用者,如果它的情况或通用的,我不知道发生了什么。如何在WCF的配置文件中指定允许的异常?

错误契约:


    [DataContract(Name = "DefaultFault", Namespace = "http://contoso.com/api/2010/03")] 
    public class DefaultFault 
    {   
     public DefaultFault(DefaultFaultItem[] items) 
     { 
      if (items == null || items.Length== 0) 
      { 
       throw new ArgumentNullException("items"); 
      } 

      StringBuilder sbItems = new StringBuilder(); 

      for (int i = 0; i

指定我的方法抛出此异常,所以消费客户会意识到这一点:

 
     [OperationContract(Name = "PlaceOrder")] 
     [FaultContract(typeof(DefaultFault))] 
     [WebInvoke(UriTemplate = "/orders", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, Method = "POST")] 
     string PlaceOrder(Order newOrder); 

大多数的时间,我们将只使用.NET来。 NET通信与通常的绑定,一切正常,因为我们正在讲同一种语言。然而,正如你在服务合同声明中看到的,我有一个WebInvoke属性(和一个webHttp绑定),以便能够与JSON对话,因为我们的一个应用程序将为iPhone构建,并且这个人将会讨论JSON。

我的问题是,无论何时在配置文件中引发FaultException并使includeExceptionDetails =“false”,调用客户端都将获得一个通用HTTP错误,而不是我的自定义消息。

我知道这是includeExceptionDetails关闭时的正确行为,但我想我很久以前就看到了一些配置,允许一些异常/故障通过服务边界。

有没有这样的事情?如果没有,你对我的情况有什么建议?

非常感谢!

回答

0

为了回报您需要在此格式添加上述服务实现的 服务行为属性例外: [servicebehavior(ReturnUnknownExceptionAsFaults =真)] 注意,这种方法应调试只

利兰使用。

+0

我正在寻找一些能够将已知异常返回到生产环境中的JSON绑定的东西。 谢谢! – tucaz 2010-05-11 12:00:54

0

不,我不这么认为 - 如果includeExceptionDetails设置设置为false,那么所有的异常将是通用的(并通过设计)。在这种情况下,我不知道有什么“漏洞”来详细说明一些故障。

相关问题