下面是我的MVC Web Api RC的Get方法。
public Employee Get(int id)
{
Employee emp= null;
//try getting the Employee with given id, if not found, gracefully return error message with notfound status
if (!_repository.TryGet(id, out emp))
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)
{
Content = new StringContent("Sorry! no Employee found with id " + id),
ReasonPhrase = "Error"
});
return emp;
}
这里的问题是,无论何时抛出错误“抱歉!没有找到带有id的员工”,只是采用平面文本格式。但是我想根据我当前的格式化程序设置格式。就像默认情况下我在global.asax中设置了XML格式化程序。因此错误应以XML格式显示。类似的东西:
<error>
<error>Sorry! no Employee found with id </error>
</error>
类似于Json格式化程序。它应该是:
[{"errror","Sorry! no Employee found with id"}]
提前致谢
答案 0 :(得分:7)
您将返回StringContent
。这意味着内容将按原样返回,由您来格式化。
就个人而言,我会定义一个模型:
public class Error
{
public string Message { get; set; }
}
然后:
if (!_repository.TryGet(id, out emp))
{
var response = Request.CreateResponse(
HttpStatusCode.NotFound,
new Error { Message = "Sorry! no Employee found with id " + id }
);
throw new HttpResponseException(response);
}
启用XML Accept的客户端将看到:
<Error xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/AppName.Models">
<Message>Sorry! no Employee found with id 78</Message>
</Error>
和启用JSON Accept的客户端会看到:
{"Message":"Sorry! no Employee found with id 78"}