Web API - 返回JSON对象以及HTTP状态

时间:2016-02-10 15:01:59

标签: c# json rest asp.net-web-api2 fiddler

我有这个Web API函数,如果传入任何无效数据,我希望用它来返回错误。我这样做是通过使用Request.CreateResponse函数,并传递错误代码和错误列表。

public HttpResponseMessage Post([FromBody]Lead leadToCreate)
    {
           // Code to validate the request, and populate errorList which is a List<Error> goes here        

            if (errorList.Count > 0)
            {
                // Return list of errors and 304 code
                return Request.CreateResponse(HttpStatusCode.NotModified, errorList);
            }
            else
            {
                //Validated successfully.
                return Request.CreateResponse(HttpStatusCode.Created);
            }

   }

Error类是:

public class Error
{
    public int number;
    public string description;
    public string url;
}

当我在localhost上使用Fiddler发出POST请求时,错误列表将作为JSON响应的一部分输出(请参阅最后一行):

  

HTTP / 1.1 304未修改

     

缓存控制:无缓存

     

Pragma:no-cache

     

Content-Type:application / json;字符集= UTF-8

     

过期:-1

     

服务器:Microsoft-IIS / 10.0

     

X-AspNet-Version:4.0.30319

     

X-SourceFiles:=?UTF-8?B?QzpcU291cmNlIENvZGVcV2ViXEZhc3R0cmFjayBBUElcRmFzdHRyYWNrIEFQSVxhcGlcc2FsZXNFbnF1aXJ5XDFc?=

     

X-Powered-By:ASP.NET

     

日期:2016年2月10日星期三14:49:20 GMT

     

[{“number”:1,“description”:“PrivateIndividual.Gender必须有效。”,“url”:“”}}

我的问题是,在发布到我的实时服务器之后,尽管使用了相同的请求数据,但不会输出错误列表,尽管返回了正确的响应代码:

  

HTTP / 1.1 304未修改

     

Cache-Control:no-cache Pragma:no-cache Content-Type:application / json; charset = utf-8

     

过期:-1服务器:Microsoft-IIS / 7.0

     

X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET日期:2月10日星期三

     

2016 14:52:13 GMT连接:关闭X-ScanSafe-Error:F284 Via:

     

HTTP / 1.1 proxy10012

任何人都可以看到为什么这可能在localhost上工作正常,但不是我的实时服务器?

1 个答案:

答案 0 :(得分:2)

看起来应用程序层代理有响应问题:

2016 14:52:13 GMT Connection: close X-ScanSafe-Error: F284 Via:

HTTP/1.1 proxy10012

看起来这个代理阻止了HttpResponse回到小提琴手。