我創建了一個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