WCF DataContract上的Readonly属性突然在一个客户端上提供异常

时间:2011-11-23 16:40:32

标签: wcf properties readonly datacontract

最近,我们的WCF服务出现了问题。这就是它的设置方式:

  • 该服务具有必要的ServiceContracts和DataContracts
  • 在DataContract中,有一个只读属性(参见下面的代码)
  • 客户端使用与Service-和DataContracts相同的DLL(因此没有WSDL)

这是readonly属性:

Dictionary<string, string> _list;

[DataMember]
public IDictionary<string, string> Fields
{
    get
    {
        if (_list == null)
            _list = new Dictionary<string, string>();
        return _list;
    }
}

客户端使用Fields.Add()方法轻松设置此属性。

最近我们得到了一个例外,即Fields应该有一个setter。我在其他几个地方看过这个,但这很奇怪:

  • 有一天,它在客户端工作正常,而不是其他日子
  • 它适用于其他客户,并且已经工作了大约1 - 2年

那为什么会突然改变呢?它可能是一个不同的.NET Framework(客户端可能在一夜之间更新)? WCF中是否真的不支持readonly属性,因为它似乎在其他客户端上运行良好?

1 个答案:

答案 0 :(得分:0)

我再也没有得到任何有关此事的消息,而且我不再参与该项目了,所以如果你遇到同样的问题,这里有一些解决这个问题的提示:

  • 代码正在Partial Trust模式
  • 中运行
  • 安装了错误的.NET Framework版本(需要.NET 3.0 SP1)
  • 不要使用服务参考

显然,就我而言,问题在于一个特定的客户。所以前两个选项是可能的。