2014-03-06 63 views
-3

我们面临严重的问题,但在说它是.net中的错误之前,我想知道是否有人了解发生了什么事以及为什么。WCF Json序列化服务参考未更新

这就是我们的配置: 1个项目DAL 1个项目代理 许多其他项目也使用DAL和WCF服务。 他们与wcf服务沟通。

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

(1)与断点的代理,我们可以看到一切正常检索当然除了新的属性(服务引用不更新=>无异常)

代理将返回与WebMessageFormat一个JSON的。 JSON(我们使用默认提供的序列化)

调用代理中调用DAL中(1)的方法的响应为空。

所以这绝对是JSON序列化中的一个问题?不是?

最差的,我们决定从WebMessageFormat.JSON改为WebMessageFormat.XML,看看同样的事情发生,==>它没有

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

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

任何帮助将是非常好的:)

在此先感谢每个人,对不起我的英语。

+2

为了得到你的问题的帮助,你应该发布一些代码 - 你的服务的相关部分和web.config可能会很有趣。 “空”是什么意思?一个空引用?另外,我在理解生成的客户端代理所做的一些事情时遇到了一些麻烦。你有没有重新生成它,或者你不想重新生成它,出于某种原因? – Tewr

回答

1

(这不是一个确切的答案但是,这是太多,不包括作为评论。)

注:我假设以下从你的问题(请纠正/澄清是否错误)。

  • 代理项目通过WCF调用DAL而不是其他方式。这将解释(1),并且属性没有通过每个层更新。
  • 客户端调用代理项目,它暴露出本身通过WCF太(这可以解释的代理项目返回WebMessageFormat.JSON响应)

这里的问题可能是,就像你说的,用的系列化代理响应本身。虽然总是建议您更新项目引用,但在这种情况下,生成的类可能不会完全映射到它们描述的响应。

到目前为止,我采取的是,类的变化已经改变了内部响应,使得引用无法再正确映射到响应类型,这可能是来自映射类的响应类型。 XML序列化程序可能是序列化程序的单独实现,所以很可能JSON序列化程序在此特定情况下出现问题。您可以通过检查内部输出中是否有任何first chance exception或通过在您自己的代码之外添加调试来检查是否属于这种情况。这可能会证实JSON序列化正面临一个问题。

它可能实际上是一个错误或不支持的情况下,当映射属性不存在时。

+0

尝试了很多场景后,我们得出了相同的结论......这是一个不受支持的场景。感谢您的帮助,并试图为此提供答案。在调试模式下,来自wcf的响应正常,并在另一个wcf中返回JSON之前崩溃。绝对是JSON序列化的一个问题。 – Heaven42

0

如果您打算从WCF使用序列化的JSON数据(设置您的数据协定当然),我会建议您使用带有JSON的DataContractSerializer。我跑进用JSON序列化的一些问题,并意识到这是一个有点玄乎与.NET

另一个解决方案是使用JSON序列与.NET: http://james.newtonking.com/json

0

在响应数据中,您是否有类型为date或任何其他非原始数据类型的对象,我在尝试在响应数据中包含日期对象时遇到问题,因此需要快速解决此问题我更改了 数据类型字符串,它为我工作。