最近,我们的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;
}
}
客户端'sets'这个属性很容易使用 Fields.Add()
方法 .
最近我们得到了一个例外,即Fields应该有一个setter . 我在其他几个地方看过这个,但这很奇怪:
-
有一天它在客户端工作得很好,而不是在另一天
-
它在其他客户端工作正常,并且已经工作了大约1 - 2年
那为什么会突然改变呢?它可能是一个不同的.NET Framework(客户端可能在一夜之间更新)? WCF中是否真的不支持readonly属性,因为它似乎在其他客户端上运行良好?
1 回答
我再也没有得到任何关于此的消息了,我不再参与那个项目了,所以如果你遇到同样的问题,这里有一些解决这个问题的提示:
代码在Partial Trust模式下运行
安装了错误的.NET Framework版本(需要.NET 3.0 SP1)
不要使用服务参考
显然,就我而言,问题在于一个特定的客户 . 所以前两个选项是可能的 .