全局格式化.net Web Api响应

时间:2016-03-09 14:46:41

标签: asp.net-web-api json.net

我有一个Web Api服务,它从另一个服务中检索数据,该服务返回Json。我不想对响应做任何事情,我只想将它直接返回给客户端。

由于响应是一个字符串,如果我只是返回响应,它包含转义字符和杂乱的格式。如果我将响应转换为对象,WebApi将使用Json.Net自动格式化响应。

 public IHttpActionResult GetServices()
    {
        var data =  _dataService.Get(); //retrieves data from a service
        var result = JsonConvert.DeserializeObject(data); //convert to object

        return Ok(result);

    }

我想要的是A:能够从服务返回确切的字符串响应,没有任何转义字符和正确的格式,或者B:设置一个全局设置,将自动反序列化响应所以Web Api可以按照我的方式处理它。

On Startup我正在设置一些值来描述如何处理格式化,但显然这些对于我想要做的事情是不正确的。

        HttpConfiguration configuration = new HttpConfiguration();
        var settings = configuration.Formatters.JsonFormatter.SerializerSettings;
        settings.Formatting = Formatting.Indented;
        settings.ContractResolver = new DefaultContractResolver();

我是否需要创建自定义ContractResolver或其他内容?有没有一个已经为我处理过这个?

由于

1 个答案:

答案 0 :(得分:1)

如果你想通过json(选项A),你可以这样做

public IHttpActionResult GetServices() {
    var json = _dataService.Get(); //retrieves data from a service
    HttpContent content = new System.Net.Http.StringContent(json, Encoding.UTF8, "application/json");
    var response = Request.CreateResponse(HttpStatusCode.OK);
    response.Content = content;
    return ResponseMessage(response);
}