Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未更新服务引用的WCF Json序列化_C#_.net_Json_Wcf_Serialization - Fatal编程技术网

C# 未更新服务引用的WCF Json序列化

C# 未更新服务引用的WCF Json序列化,c#,.net,json,wcf,serialization,C#,.net,Json,Wcf,Serialization,我们面临着一个严重的问题,但在说这是.net中的一个bug之前,我想知道是否有人知道发生了什么以及为什么 这就是我们的配置: 1项目DAL 1项目代理 许多其他项目也将DAL与WCF服务结合使用。 它们与wcf服务进行通信 我们在DAL中的一个对象中添加了一些属性 我们尚未更新代理项目中的服务引用 1在带有断点的代理中,我们可以看到所有内容都已正确检索,当然新属性服务引用未更新=>无异常情况除外 代理使用默认提供的序列化返回带有WebMessageFormat.JSON的JSON 在DAL中调用

我们面临着一个严重的问题,但在说这是.net中的一个bug之前,我想知道是否有人知道发生了什么以及为什么

这就是我们的配置: 1项目DAL 1项目代理 许多其他项目也将DAL与WCF服务结合使用。 它们与wcf服务进行通信

我们在DAL中的一个对象中添加了一些属性 我们尚未更新代理项目中的服务引用

1在带有断点的代理中,我们可以看到所有内容都已正确检索,当然新属性服务引用未更新=>无异常情况除外

代理使用默认提供的序列化返回带有WebMessageFormat.JSON的JSON

在DAL中调用1的代理中调用的方法的响应为空

所以这肯定是JSON序列化中的一个问题?没有

最糟糕的是,我们决定将WebMessageFormat.JSON改为WebMessageFormat.XML,看看是否发生了同样的情况,==>没有

最后一件事,没有问题的是,其他项目没有更新,他们没有使用JSON ser

是否有人遇到过同样的问题,或者知道为什么会发生这种情况

任何帮助都会非常好:


提前感谢大家,并为我的英语感到抱歉。

如果您要使用WCF中的序列化JSON数据,我建议您使用带有JSON的DataContractSerializer当然要设置数据契约。我在使用JSON序列化程序时遇到了一些问题,并意识到使用.NET时有点不确定

另一个解决方案是将此JSON序列化程序与.NET一起使用:
这不是一个明确的答案,而是一种怀疑。然而,这太多了,不能作为评论

注:我假设以下是您的问题,如果有错误,请更正/澄清

代理项目通过WCF而不是相反的方式调用DAL。这将解释1,以及未通过每个层更新的特性。 客户端调用代理项目,代理项目也通过WCF公开自身。这可以解释代理项目返回WebMessageFormat.JSON响应的原因 正如您所说,这里的问题可能与代理响应本身的序列化有关。尽管更新项目引用始终是明智的,但在这种情况下,生成的类可能没有精确映射到它们所描述的响应

到目前为止,我的看法是,类中的更改已经改变了内部响应,导致引用无法再正确映射到响应类型,而响应类型很可能来自映射的类。XML序列化程序可能是序列化程序的一个单独实现,因此JSON序列化程序很可能在这种特定情况下出现问题。您可以通过检查内部输出中是否存在第一次出现的异常,或者在自己的代码之外添加调试来检查是否存在这种情况。这可能会确认JSON序列化面临问题


这实际上可能是一个bug,或者是当要映射的属性不存在时不受支持的场景。

响应数据中是否有日期类型的对象或任何其他非原始数据类型,我在尝试将日期对象包含在响应数据中时遇到了问题,为了快速解决问题,我更改了
数据类型转换为字符串,这对我很有用。

要获得有关问题的帮助,您应该发布一些代码-您的服务和web.config的相关部分可能会很有趣。空是什么意思?空引用?另外,我在理解您对生成的客户端代理所做的工作时遇到了一些困难。你是因为某种原因重新生成了它,还是你不想/不能重新生成它?在尝试了许多场景后,我们得出了相同的结论。。。这是一个不受支持的场景。谢谢你的帮助,也谢谢你试图给我一个答案。在调试模式下,来自wcf的响应正常,在另一个wcf中返回JSON之前崩溃。JSON序列化肯定有问题。