在web api asp.net中返回值

本文关键字:返回值 net asp web api | 更新日期: 2023-09-27 18:20:08

我有两个代码:

第一个代码:

public class CategoryController : ApiController
{
    Shop_DTBEntities shop_DTBEntities = new Shop_DTBEntities();
    public IEnumerable<Category> GetAll_Category()
    {
        return shop_DTBEntities.Categories.ToList<Category>();
    }
}

当我运行上面的代码时,它抛出了1个错误The 'ObjectContent 1`type未能序列化内容类型application/json的响应体;charset=utf-8'。"之后,我在global.asax中添加了新的2行代码:

protected void Application_Start()
{
    GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
    GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
    GlobalConfiguration.Configure(WebApiConfig.Register);
}

但如果应用程序使用第二个代码,则会像上面的一样抛出错误

第二个代码:

public IEnumerable<Category> GetAll_Category()
{
    using (Shop_DTBEntities shop_DTBEntities = new Shop_DTBEntities())
    {
        return shop_DTBEntities.Categories.ToList<Category>();
    }
}

在web api asp.net中返回值

您可以通过一个配置设置来修复它

最好在dbcontext构造函数中使用它

public DbContext() // dbcontext constructor
            : base("name=ConnectionStringNameFromWebConfig")
{
     this.Configuration.LazyLoadingEnabled = false;
     this.Configuration.ProxyCreationEnabled = false;
}