gpt4 book ai didi

json - 向引用了 JSON.NET 库的项目添加服务引用时出现奇怪的问题

转载 作者:行者123 更新时间:2023-12-03 17:54:13 25 4
gpt4 key购买 nike

该项目是您标准的普通项目 ASP.NET MVC 3 与内部 WCF 服务通信的应用程序。我们的 ASP.NET MVC 应用程序引用了一些外部库,包括流行的 JSON.NET 库。

仅当 JSON.NET 库是项目中的引用时才会出现此问题。我尝试使用 WebForms 和 Windows Forms 重新创建此问题项目,同样的事情发生了。

当向我们的 WCF 服务添加服务引用时,并且 JSON.NET 是我们项目中的引用,它会像这样构建服务引用:

在项目中引用 JSON.NET - 注意请求/响应类和奇怪的属性,如 Id1 和 IdSpecified

With JSON.NET

但是删除对 JSON.NET 的引用并更新服务引用会按照我们想要的方式构建它,如下所示:

项目中没有引用 JSON.NET

Without JSON.NET

...

这到底是什么原因造成的? WCF 项目中未引用 JSON.NET,因此我非常怀疑那里可能存在某种混淆。

一些可能有帮助的信息:

  • 尝试检查“添加服务引用”对话框中的各种选项,例如“在引用的程序集中重用类型”——但同样的事情发生
  • Visual Studio 2010
  • WCF 服务使用 Entity Framework 进行数据访问
  • 最佳答案

    当您添加服务引用时,默认情况下 WCF 将重用您的程序集中的类,这些类与否则将生成的类相匹配。

    发生这种情况的原因是,例如,您可能同时开发服务和客户端,并且您可能希望拥有一个包含两个项目中引用的所有类的类库。这也确保使用 .NET 默认类型(如数组、列表、DateTime)。

    您可以像这样更改此默认行为:

  • 选择“添加服务引用”后单击“高级”按钮
  • 选择“在指定的引用程序集中重用类型”
  • 检查所有程序集,除了您不想检查的程序集
    使用

  • 请注意,如果您不检查系统程序集,您还将在代理文件中为每个 .NET 类型(如数组、列表)生成一个新类型。

    关于json - 向引用了 JSON.NET 库的项目添加服务引用时出现奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14104939/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com