1

在我的 WCF 服务中引发异常时,我需要一点帮助。关键是:我需要开发一个 WPF 应用程序,我听说处理数据 WCF 是最好的选择,所以我只在基础知识的情况下使用它,现在我遇到了这个问题。

关键是,我有一个 Customer 类、一个 Supplier 类和一个 Order 类。然后我有两个服务:第一个具有从数据库添加、读取和编辑客户和供应商的所有方法。这项服务工作得很好。第二个服务有添加新订单、编辑订单和从数据库中读取它们的方法,这个服务有问题。

Customer 类有一个供应商列表(客户从中购买的供应商),Supplier 类有一个客户列表(从该供应商处购买的客户)。类订单有一个客户、一个供应商和一个 Itens 列表(并且这些 itens 与订单一起添加到数据库中)。

添加订单的方法可以正常工作,但是,一旦添加了订单,列出订单的方法就会抛出 TargetInvocationException。我在互联网上搜索了很多,我发现的最佳答案是它可能是“Ciclyc 参考”。

列出订单的方法在存储库类中,很简单:

public IQueryable<Order> ListOrders()
{
    return Context.Set<Order>().Include(x => x.Customer).Include(x => x.Supplier);
}

其中 Context 是实体框架上下文。我尝试删除包含并分别加载客户和供应商,但结果是相同的异常。

有人可以帮帮我吗 ?如果我需要发布更多信息,请告诉我。对不起,如果这件事很简单,我是 WPF 和 WCF 的新手,所以我还是有点困惑。

提前非常感谢。

下面的编辑例外

接收对 http://SomeService.com/OrdersService.svc的 HTTP 响应时出错。这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于 HTTP 请求上下文

被服务器中止(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。

服务器堆栈跟踪:在 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan 超时) 在 System.ServiceModel.Channels.RequestChannel.Request(消息消息,TimeSpan 超时) 在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息消息,TimeSpan超时)在 System.ServiceModel.Channels.ServiceChannel.Call(字符串操作,布尔单向,ProxyOperationRuntime 操作,Object[] 输入,Object[] 输出,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 消息)

在 [0] 处重新抛出异常:在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 类型) 在 IOrdersService.ReturnOrders( ) 在 OrdersServiceClient.ReturnOrders()

内部异常:底层连接已关闭:接收时发生意外错误。在 System.Net.HttpWebRequest.GetResponse() 在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(时间跨度超时)

内部异常:无法从传输连接读取数据:现有连接被远程主机强行关闭。在 System.Net.Sockets.NetworkStream.Read(Byte[] 缓冲区,Int32 偏移量,Int32 大小) 在 System.Net.PooledStream.Read(Byte[] 缓冲区,Int32 偏移量,Int32 大小) 在 System.Net.Connection.SyncRead (HttpWebRequest 请求,布尔型 userRetrievedStream,布尔型 probeRead)

内部异常:远程主机在 System.Net.Sockets.NetworkStream.Read(Byte [] 缓冲区,Int32 偏移量,Int32 大小)

4

1 回答 1

1

[DataContract(IsReference = true)]用属性标记您的数据对象。这应该可以解决问题。

于 2012-11-06T03:33:41.743 回答