C# Web Api 2 OkResult不传递通用列表

C# Web Api 2 OkResult不传递通用列表,c#,asp.net-web-api,C#,Asp.net Web Api,使用Fiddler进行测试,下面的WebAPI2方法将返回正确填写Success属性的对象,但Results属性始终为空。单步执行调试器时,列表中有数据,但未作为响应的一部分发送 我返回的对象是EF生成的代理对象,这可能也与EF有关 public class ApiResult<T> { public ApiResult() { Results = new List<T>(); } public bool Success

使用Fiddler进行测试,下面的WebAPI2方法将返回正确填写Success属性的对象,但Results属性始终为空。单步执行调试器时,列表中有数据,但未作为响应的一部分发送

我返回的对象是EF生成的代理对象,这可能也与EF有关

public class ApiResult<T>
{
    public ApiResult()
    {
        Results = new List<T>();
    }

    public bool Success { get; set; }
    public List<T> Results { get; set; }
}


[HttpGet]
[Route("test")]
public IHttpActionResult test()
{
    ApiResult<User> rv = new ApiResult<User>();
    rv.Success = true;
    rv.Results.Add(new User { name = "Steve" })
    rv.Results.Add(new User { name = "Dave" })

    return Ok(rv);
}
WebApiConfig.cs

config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

您正在将属性结果定义为
对象的列表
。由于类型
对象
没有任何属性,因此序列化程序返回一个空对象。尝试将结果定义为
用户的列表,如下所示:

public class ApiResult
{
    public ApiResult()
    {
        Results = new List<User>();
    }

    public bool Success { get; set; }
    public List<User> Results { get; set; }
}
公共类ApiResult
{
公众谘询结果(
{
结果=新列表();
}
公共bool成功{get;set;}
公共列表结果{get;set;}
}

这完全有道理。我怎样才能一般地使用它作为不同api调用的返回对象?这一个返回用户对象,另一个可能返回不同的域模型。您可以尝试使用通用参数,如
public class apireult
public List Results
。然后调用
apireult rv=newapireult()
以获取正确的类型。请参阅以获取有关泛型参数的更多信息。我已经更新了我的代码和上面的示例,并且仍在生成相同的结果。请尝试删除WebApiConfig上的json格式化程序,以查看是否是他导致了此问题:
config.Formatters.remove(config.Formatters.JsonFormatter)。让我们看看。
public class ApiResult
{
    public ApiResult()
    {
        Results = new List<User>();
    }

    public bool Success { get; set; }
    public List<User> Results { get; set; }
}