1、确实没有服务方法;
2、Web.Config中没有相应的DomainService配置(解决:在承载应用添加一个空的域服务,然后删除即可);
3、服务方法是在于一个WCF RIA Services类库里,如果承载网站没有引用,或者是如果承载网站下Bin里的dll没有更新也会提示这种错误(VS的自动复制有的时候不是非常有效);(解决:同步更新相应的dll文件到bin目录下)
4、服务方法没有打Invoke标签;
5、返回的实体序列化有问题,这种情况引起的错误,非常隐蔽,非常让人伤脑筋,但这种情况下,我们是可以跟踪到服务器端代码的,一般都是服务方法调用一离开,客户端就报错。这种情况下,基本都是实体序列化出现了问题,到目前为止,我发现以下几种情况会导致序列化问题:
A)实体引用出现了实例级的循环(这个问题在前面一片博文中有提到);(解决:检查实体的引用关系,解除实例级的循环,最好是在类级引用就防止这种循环引用出现)
B)有Shared代码时,如果客户端与服务端Shared代码有差异,特别是属性方面(一般出现在Shared代码不能自动复制,直接拷贝到客户端的情况);(解决:服务端和客户端的Shared代码保持一致)
C)返回数据里实体个数太多,默认配置的情况下10个字段左右的实体,如果超过3000条记录,就会出错(这里是个约数),(解决:方法是配置这个服务的最大序列化实体数,改成最大即可(在web.config里),另外每次返回到客户端得实体数量还是不要多,分页最好还是采用服务端方式)。
在上面5种情况里,3-5都是比较隐蔽的,特别是5,而1,2,4检查相对比较容易。当然,我这里出现的问题主要是针对使用DomainService,如果用LinqToEntitiesService就只能参考了,情况也许会有所不同.
如果大家有更多的情况,也可以分享一下,捉虫不容易啊。