我们的服务如下:
public class Clients
{
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedResponse, UriTemplate = "", ResponseFormat = WebMessageFormat.Json)]
[ServiceKnownType(typeof(MyClient))]
[FaultContract(typeof(MyFault))]
public string New(MyClient newClient)
{
try
{
return Clients.NewClient(newClient);
}
catch (MyException ex)
{
throw new WebFaultException<MyFault>(new MyFault(ex.Message), System.Net.HttpStatusCode.BadRequest);
}
catch (Exception ex)
{
throw new WebFaultException<MyFault>(new MyFault(ex.Message), System.Net.HttpStatusCode.InternalServerError);
}
}
}
并且错误类是
[DataContract]
public class MyFault
{
public MyFault(string data)
{
Data = data;
}
[DataMember]
public string Data { get; set; }
}
通过我读过的关于WebFaultException的所有内容,当命中错误处理代码块时,响应应该具有我设置的状态代码,并且正文应该是异常消息的JSON表示。状态代码部分有效;但是,响应体总是空的(编辑:我的意思是当我从客户端[在AngularJS中]调用服务时,响应对象只包含状态代码和空数据字段)。我也尝试过使用自定义错误类型并使用WebFaultException <string>
,但结果是一样的。我做错了吗?