我用两种方法创建了一个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";
}
}
Service2完美无缺。但是,service1返回可怕的 “远程服务器返回错误:未找到”
我认为它与返回类型IQueryable<object>
有关,但我不知道应该改变什么来使它工作。我尝试了List<string>
,ObservableCollection<object>
和其他一些但无济于事。
我应该怎样做才能将我的数据传回客户端?
由于
答案 0 :(得分:1)
取决于与Aron的问题和对话。
我认为这是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 viewer打开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>