2013-05-08 102 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