2012-11-05 2 views
1

내 WCF 서비스에서 예외가 발생하면 약간의 도움이 필요합니다. 요점은 : WPF 응용 프로그램을 개발할 필요가 있고 WCF 데이터를 처리하는 것이 최상의 선택이므로 기본 지식만으로이 메서드를 사용했지만이 문제가 생겼습니다.WCF 서비스 TargetInvocationException - 가능한 순환 참조

요점은 고객 클래스, 공급 업체 클래스 및 주문 클래스입니다. 저는 두 가지 서비스를 제공합니다 : 첫 번째 방법은 데이터베이스에서 고객과 공급자를 추가, 읽기 및 편집하는 모든 방법을 제공합니다. 이 서비스는 완벽하게 작동합니다. 두 번째 서비스에는 새 주문을 추가하고 주문을 편집하고 데이터베이스에서 읽는 방법이 있습니다.이 서비스에는 문제가 있습니다.

고객 클래스에는 공급 업체 목록 (고객이 구매 한 공급 업체), 공급자 공급 업체 목록 (해당 공급 업체로부터 구매 한 고객)이 있습니다. 클래스 주문에는 고객, 공급자 및 Itens 목록이 있으며 주문은 주문과 함께 데이터베이스에 추가됩니다.

주문을 추가하는 방법은 정상적으로 작동하지만 주문이 추가되면 주문을 나열하는 메서드는 TargetInvocationException을 발생시킵니다. 나는 인터넷에서 많은 것을 수색했고 내가 찾은 최고의 대답은 아마도 "Ciclyc Reference"일 가능성이있다.

주문을 나열하는 방법은 저장소 클래스 내에 간단하다 :

컨텍스트는 엔티티 프레임 워크 상황이다
public IQueryable<Order> ListOrders() 
{ 
    return Context.Set<Order>().Include(x => x.Customer).Include(x => x.Supplier); 
} 

. 내가 포함을 제거하고 고객과 공급 업체를 별도로로드하려고했지만 결과도 같은 예외였습니다.

누군가 나를 도울 수 있습니까? 더 많은 정보를 게시해야한다면 알려주십시오. 그리고이 문제가 사소한 경우 미안 해요, WPF와 WCF에 익숙하지 않아 조금 혼란 스럽습니다.

미리 감사. http://SomeService.com/OrdersService.svc에 HTTP 응답을 수신하면서

EDIT

아래 예외 오류가 발생했습니다. 이는 HTTP 프로토콜을 사용하지 않는 서비스 끝점 바인딩 때문일 수 있습니다. HTTP 요청 컨텍스트가

인 경우 (서비스가 종료되었을 가능성이 있기 때문에) 일 수도 있습니다. 자세한 내용은 서버 로그를 참조하십시오.

서버 스택 추적 : System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException (WebException이 WebException이, HttpWebRequest를 요청, HttpAbortReason abortReason)에서 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (시간 범위 에서
System.ServiceModel.Channels.Serv에서 System.ServiceModel.Dispatcher.RequestChannelBinder.Request (메시지 메시지, 타임 아웃 시간 범위)에서 System.ServiceModel.Channels.RequestChannel.Request (메시지 메시지 타임 아웃 시간 범위)에서의 타임 아웃) iceChannel.Call ( Boolean oneway, ProxyOperationRuntime 작업, Object [] ins, Object [] outs, TimeSpan 시간 초과) at System.ServiceModel.Channels.ServiceChannelProxy. System.ServiceModel.Channels.ServiceChannelProxy.Invoke에서 InvokeService (IMethodCallMessage methodCall을, ProxyOperationRuntime 동작) (iMessage를 메시지) [0]에

예외 재 throw : 에서 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage ( System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData &에서 iMessage를 reqMsg, iMessage를 retMsg) OrdersServiceClient.ReturnOrders()

내부 예외에 IOrdersService.ReturnOrders()에서 msgData, INT32 타입) 다음 유 nderlying 연결이 닫혔습니다. 수신시 예기치 않은 오류가 발생했습니다. 전송 연결에서 데이터를 읽을 수 없습니다 : System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (시간 범위 시간 초과)

내부 예외에 System.Net.HttpWebRequest.GetResponse()에서 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다. (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.Socket.Receive에서 원격 호스트에 의해 폐쇄되었다 (바이트 [] 버퍼 Int32 오프셋, Int32 크기, SocketFlags socketFlags) 에서 System.Net.Sockets.NetworkStream.Read (Byte [] 버퍼, Int32 오프셋, Int32 크기)

+0

예외를 제기하는 전체 예외와 wcf 클라이언트 코드를 게시하십시오. –

답변

1

데이터 개체를 [DataContract(IsReference = true)] 특성으로 표시하십시오. 이렇게하면 문제가 해결됩니다.

+0

안녕하세요 HighCore, 이미 시도해 보았습니다. 그 속성에 대해 들었고 클래스를 표시했지만 문제는 계속됩니다. – user1620696

+0

개체에서 어떤 종류의 속성을 사용합니까? [DataMember]로 표시되어 있습니까? Enum 형식은 WCF DataContractSerializer –

+0

HighCore에서 지원하지 않으므로 열거 형 속성이없고 [DataMember]로 표시된 것은 없습니다. 이 [DataMember]가 필요합니까? 말했듯이, 나는 WCF에 완전히 익숙하지 않기 때문에 클래스에는 유효성 검사 속성 만 있습니다. 더 많은 코드를 가진 유일한 클래스는 INotifyPropertyChanged 인터페이스를 구현하는 Item 클래스입니다. – user1620696