下面是我的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"}] 

提前致谢

请您参考如下方法:

您正在返回一个 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"} 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!