我创建了一个WCF服务,2种方法:由于返回数据类型,WCF服务不工作?
[ServiceContract(Namespace = "")]
[SilverlightFaultBehavior]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyDataService
{
[OperationContract]
public IQueryable<object> Service1()
{
PivotData pivot = new PivotData();
IQueryable<object> list = pivot.GeneratePivotData();
return list;
}
[OperationContract]
public string Service2()
{
return "hello";
}
}
的客服2工作完全正常。但是,service1返回可怕的 “远程服务器返回错误:未找到”
我相信它与返回类型IQueryable<object>
有关,但我不知道我应该改变它的工作。我试过List<string>
,ObservableCollection<object>
和其他一些,但无济于事。
我应该做的让我的数据返回给客户端?
谢谢
您这里有两个问题。首先是IQueryable不能被序列化。有可能基础类型根本无法序列化。所以你想'ToList()'它。第二个问题是'System.Object'。 WCF可能不知道如何序列化底层类型。创建一个具体的(希望被密封的)类,并赋予它'DataContract'和'DataMember'属性并返回一个新类的List。 – Aron 2013-05-08 08:47:02
我创造了这个类:[DataContract] 公共类BaseClass的 { [数据成员] 公开名单 MYLIST {获取;集;}} 我仍然有错误 –
Oliver
2013-05-08 09:25:47
嗯...有什么错误?异常类型/堆栈跟踪/源代码。 – Aron 2013-05-08 09:39:39