1

我在 SelfHost 配置上有一个 APIController,它生成像 XML 文档这样的响应:

public XmlDocument Get(int id)
{
    XmlDocument doc;
    doc = repo.get(id); // simplified

    if(doc != null)
        return doc;

    throw new HttpResponseExeption(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Something went terribly wrong."));
}

如果出现异常,我想以 JSON 格式而不是 XML 向客户端发送响应,因此我可以正确解析 jquery AJAX 请求中的错误消息(错误回调):

JSON.parse(jqXHR.responseText).Message;

考虑到 jQuery 请求为正确的流程发送 dataType: 'xml' ,我如何将 HttpResponseException “动态”的格式化程序更改为 JSON?

4

1 回答 1

1

如果我理解正确,您似乎总是希望将错误以 JSON 格式发送回,而不是通过内容协商为 XML?这看起来很奇怪,因为如果客户端请求 XML 格式的响应正文,他们通常也希望错误消息也以 XML 格式发送回。

但是,如果你真的必须这样做,你可以这样做:

public XmlDocument Get(int id)
{
    XmlDocument doc;
    doc = repo.get(id); // simplified

    if(doc != null)
        return doc;

    throw new HttpResponseExeption(
        Request.CreateResponse(HttpStatusCode.NotFound, new HttpError("Something went terribly wrong."), Configuration.Formatters.JsonFormatter));
}
于 2013-06-04T18:11:30.493 回答