Asp.Net Web API 错误:“ObjectContent`1”类型无法序列化内容类型“application/xml”的响应正文;字符集=utf-8'

2023-12-06

最简单的例子,我得到一个集合并尝试通过 Web API 输出它:

// GET api/items
public IEnumerable<Item> Get()
{
    return MyContext.Items.ToList();
}

我收到错误:

对象类型
'System.Data.Objects.ObjectQuery`1[Dcip.Ams.BO.EquipmentWarranty]' 无法转换为类型
'System.Data.Entity.DbSet`1[Dcip.Ams.BO.EquipmentWarranty]'

这是新代理的一个非常常见的错误,我知道我可以通过设置来修复它:

MyContext.Configuration.ProxyCreationEnabled = false;

但这违背了我想做的很多事情的目的。有没有更好的办法?


我建议仅在您不需要或给您带来麻烦的地方禁用代理创建。您不必全局禁用它,您只需通过代码禁用当前的数据库上下文...

    [HttpGet]
    [WithDbContextApi]
    public HttpResponseMessage Get(int take = 10, int skip = 0)
    {
        CurrentDbContext.Configuration.ProxyCreationEnabled = false;

        var lista = CurrentDbContext.PaymentTypes
            .OrderByDescending(x => x.Id)
            .Skip(skip)
            .Take(take)
            .ToList();

        var count = CurrentDbContext.PaymentTypes.Count();

        return Request.CreateResponse(HttpStatusCode.OK, new { PaymentTypes = lista, TotalCount = count });
    }

这里我只禁用了这个方法中的ProxyCreation,因为对于每个请求都会创建一个新的DBContext,因此我只禁用了这种情况下的ProxyCreation。 希望能帮助到你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.Net Web API 错误:“ObjectContent`1”类型无法序列化内容类型“application/xml”的响应正文;字符集=utf-8' 的相关文章

  • 从EntityFramework的`DbContext`获取数据库类型

    问题非常简单 给定一个实体框架的实例DbContext 我想告诉它的有效数据库之间是如何连接的 据我所知 目前有针对 SQL Server Microsoft MySQL Oracle 以及 Postgres 的 EF 提供程序的实现 假设
  • LINQ to Entities 查询中的可重用谓词表达式

    在我们的应用程序中许多不同查询中出现的一组特定条件已经慢慢变得更加复杂 为了避免重复此代码 我想将这些条件拆分为一个方法 该方法将条件作为表达必要时可以依次应用 public Expression
  • 我应该使用 Web API 还是 Web 方法?

    我正在尝试了解 Web api 和一些有关 Web 方法的新闻 我听说我们应该停止使用一些来源的 Web 方法 此外 如果不再使用 Web 方法 Web API 是否会成为继任者 Web 方法是 ASMX 技术的一部分 ASMX 是一项遗留
  • 单元测试 SqlFunction

    我有一个公开 IQueryable 的存储库和一个处理特定查询的服务 这里有一些使用 DbFunctions 的方法 为了可测试 我创建了一个带有静态元素列表的假存储库并将其注入到服务中 问题是 由于我的服务查询列表并且不使用数据库 因此我
  • 如何自动将实体模型更改部署到数据库?

    目前我使用 Visual Studio 数据库项目 因此我可以一键将更改部署到数据库并将数据保留在数据库中 现在我希望能够在实体框架中创建模型并一键部署 所以我得到了从实体框架创建数据库的sql脚本 我可以运行此脚本来创建数据库 但我想将数
  • 重构:从自定义数据访问层切换到实体框架

    我是一名 NET 开发人员 作为重构项目的一部分 我有几个问题 我们的软件当前使用 Active Record 模式 数据对象和业务对象之间的一对一映射 不好的是业务对象继承自数据对象 导致层之间的高度耦合 我们的目标是从自定义数据访问层
  • 此资源不支持“multipart/form-data”

    我有 WEBAPI2 后端 我尝试从邮递员发送表单数据 但出现这个错误 没有 MediaTypeFormatter 可用于从媒体类型为 multipart form data 的内容中读取类型为 StartWorkingDay 的对象 这是
  • C# API 返回字符串而不是 XML 包装的字符串

    我正在使用 ApiController 但无法调用返回 XML 以外的任何内容 public class GuideController ApiController AcceptVerbs GET HttpGet public string
  • 如何让EF全局记录sql查询?

    我该如何 告诉 EF全局记录查询 我正在读这篇博文 EF 日志记录 http blog oneunicorn com 2013 05 08 ef6 sql logging part 1 simple logging 它一般告诉我们如何记录s
  • 实体框架和不区分大小写的字符串搜索

    我有一个实体框架实体 其字符串属性名为 描述 搜索描述包含字符串的所有实体非常简单 var res from u ctx Users where u Description contains str select u 但是假设我想支持不区分
  • 实体框架的提供程序连接字符串是否可以替换为 web.config 中已定义的数据库连接字符串?

    我在 web config 的 connectionString 部分中定义了一个数据库连接字符串 ApplicationServices 并有 3 个实体框架连接字符串 它们的提供程序连接字符串属性与 ApplicationService
  • 在实体框架中不使用 Dispose 或 using()

    我一路上正在编写一个网络应用程序并学习实体框架 如果我做错了什么 我很好奇 我在查询时没有使用过 dispose 或 using 语句 我的存储库示例 public User GetUserById int sessionId var us
  • 使用 XML 文档部署 Web API 项目时,构建服务器上“访问被拒绝”

    为了使用 Web API 帮助页面为我的 Web API 项目生成 XML 文档 我必须检查项目属性的 构建 部分下的 XML 文档文件 选项 当我在本地构建时 这会正确生成文档 但是 当我签入时 我在构建服务器上收到以下错误 CSC 生成
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • 如何确保在 EF Code First 中对表关系启用级联删除?

    我想使用代码优先在表上启用级联删除 从头开始重新创建模型时 即使自动设置关系 也不会设置 CASCADE DELETE 奇怪的是 它确实为某些具有多对多关系的表启用了此功能 但您可能会认为这可能会出现问题 Setup 表 A 表B的FK指向
  • 线程安全实体框架 6

    刚刚开始测试 EF6 及其异步功能 当我意识到它们不是线程安全时 我很惊讶 我有点认为这就是重点 我有自己的Task基于扩展方法已经很多年了 但我一直在等待 EF 使它们成为线程安全的 至少我的基于任务的功能lock以免互相干扰 EF6 甚
  • Web API 帮助页面显示每个方法的两个版本

    如何避免帮助页面显示我的方法的两个版本 正如你所看到的 我已经设置了一条自定义路线 api property search finnId 但我不希望使用查询参数的那个出现在 帮助 页面中 有办法解决这个问题吗 我正在使用 ASP NET F
  • 使用实体框架的子查询

    我正在移植一个子系统NHibernate to 实体框架并希望了解将以下查询移植到的最佳方法EF var date DateTime Now It can be any day AccountBalanceByDate abbd null
  • 实体框架:Detach 和 AsNoTracking 之间的区别

    我的目标是复制现有实体 稍微修改它 然后插入修改后的版本 我尝试了两种不同的方法 似乎都有效 var thing context Things Where x gt x SomeID someid AsNoTracking Single t
  • EF 4.4 InverseProperty 并不完全逆

    这可能确实是显而易见的事情 但我不确定为什么我的 InverseProperty 注释不能以其他方式工作 我有这两个课程 简化 public class Cluster Key public int ClusterId get set Re

随机推荐