我从VS2008创建了一个基本的Silverlight WCF服务。我从自动生成的WCF服务中唯一改变的是添加方法:
public int DoWork2(int x, Version version)
{
return x;
}
如果我删除Version参数,我的Silverlight客户端工作正常,但如果添加了Version参数,我会收到错误:
The remote server returned an error: NotFound.
我不知道为什么。有什么指针吗?
编辑:我应该注意,每次更改方法签名后,我都会更新服务参考。
答案 0 :(得分:2)
如果您更改了方法参数或名称,那么这意味着方法签名已经更改,在那里的某处将找到定义该方法签名的接口,如下所示
[OperationContract]
int DoWork2(int x)
转到该方法签名并将其更改为如此
[OperationContract]
int DoWork2(int x, Version version)
我怀疑WCF告诉您它无法使用您提供的方法签名找到托管在给定端点上的方法
编辑: 在WCF中进行此更改后,请记住更新Silverlight中的服务引用,以便Silverlight可以理解新的操作合同
还要确保silverlight能够序列化Version对象,使用WCF诊断跟踪日志记录,并确切地找出问题所在以及问题发生在哪一方(客户端或服务器)