使用RESTful WCF服务,尝试使用WebFaultException返回错误信息,但响应始终为空

时间:2016-04-15 12:20:20

标签: c# asp.net wcf rest

我们的服务如下:

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>,但结果是一样的。我做错了吗?

0 个答案:

没有答案