2013-05-08 100 views
0

我創建了一個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>和其他一些,但無濟於事。

我應該做的讓我的數據返回給客戶端?

謝謝

+0

您這裏有兩個問題。首先是IQueryable不能被序列化。有可能基礎類型根本無法序列化。所以你想'ToList()'它。第二個問題是'System.Object'。 WCF可能不知道如何序列化底層類型。創建一個具體的(希望被密封的)類,並賦予它'DataContract'和'DataMember'屬性並返回一個新類的List。 – Aron 2013-05-08 08:47:02

+0

我創造了這個類:[DataContract] 公共類BaseClass的 { [數據成員] 公開名單 MYLIST {獲取;集;}} 我仍然有錯誤 – Oliver 2013-05-08 09:25:47

+0

嗯...有什麼錯誤?異常類型/堆棧跟蹤/源代碼。 – Aron 2013-05-08 09:39:39

回答

1

取決於問題和對話與阿隆。

我認爲這是一個WCF-Ria服務如果是的話請重新提問,否則您可能會忽略此答案。

嘗試下面的代碼。

除此之外,如果你使用RIA服務。您應該使用[Association("FK_assos_name", "field", "field")][Include]來獲得複雜的屬性,並且您的基類應該至少有一個[Key]屬性字段。如ID。

[OperationContract] 
public BaseClass[] ServiceMethod1() 
{ 
    PivotData pivot = new PivotData(); 
    IQueryable<object> list = pivot.GeneratePivotData(); 
    return list.ToArray(); 
} 

如果仍然出現錯誤,請在您的web.config文件中添加以下幾行。然後用svclog查看器打開WcfDetailTrace.svclog。紅色部分會告訴你什麼出了問題。

<system.diagnostics> 
<trace autoflush="true"> 
    <listeners> 
    </listeners> 
</trace> 
<sources> 
    <source name="System.ServiceModel" 
      switchValue="Information, ActivityTracing" 
      propagateActivity="true"> 
     <listeners> 
      <add name="sdt" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData= "WcfDetailTrace.svclog" /> 
     </listeners> 
    </source> 
</sources> 

+0

謝謝!該svclog幫助很大。找到一個「紅色部分」,內部異常說:在對象圖中可以序列化或反序列化的項目的最大數目是'65536'。更改對象圖或增加配額MaxItemsInObjectGraph。 – Oliver 2013-05-08 11:30:43

+0

歡迎您在發佈時不要忘記評論日誌記錄部分。否則.svclog文件可能會增長。 – 2013-05-08 11:56:21