我正在通过我们的所有应用程序构建一组供内部使用的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关闭时的正确行为,但我想我很久以前就看到了一些配置,允许一些异常/故障通过服务边界。
有没有这样的事情?如果没有,你对我的情况有什么建议?
非常感谢!
我正在寻找一些能够将已知异常返回到生产环境中的JSON绑定的东西。 谢谢! – tucaz 2010-05-11 12:00:54