使用这样的对象:
[DataContract]
public class SampleItem
{
private int _id;
[DataMember(IsRequired = true)]
public int Id
{
get { return _id; }
set { _id = value; }
}
private string _stringValue;
[DataMember()]
public string StringValue
{
get { return _stringValue; }
set { _stringValue = value; }
}
这样的REST调用:
[WebInvoke(UriTemplate = "", Method = "POST")]
public SampleItem Create(SampleItem instance)
{
if (instance == null)
throw new WebFaultException<string>("The SampleItem returned wasn't correctly formatted.",
HttpStatusCode.BadRequest);
return instance;
}
如果我使用无效的SampleItem调用它,请说出没有这样的ID的内容:
<SampleItem xmlns="http://schemas.datacontract.org/2004/07/UserWebServices" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><StringValue>SingleItem</StringValue></SampleItem>
然后服务器给我一个400(正确)的背面没有有用的错误信息(我得到的是:服务器遇到处理请求的错误。有关详细信息,请参阅服务器日志)。理想情况下,我希望它能说像ID这样的东西。
如何拦截生成此错误的位置并抛出自己的WebFaultException?
答案 0 :(得分:0)
从REST Start Kit查看WebProtocolException。然后,您可以在异常中发回自定义错误消息,如下所示:
catch (Exception ex)
{
throw new WebProtocolException(HttpStatusCode.InternalServerError, "Unexpected Error.", new ServiceFault { ExceptionDetail = "Your custom error message here" }, null);
}