2012-06-21 1 views
6

IIS 7.5를 사용하는 회사에서 서버에 내 WCF 서비스를 배포했는데 모든 것이 정상적으로 작동하는 것 같습니다. 그러나 클라이언트 응용 프로그램을 설정하고 서버에 대한 서버 참조를 추가 한 다음이 코드를 사용합니다.WCF 서비스 클라이언트 응용 프로그램에서 "개체가 개체의 인스턴스로 설정되지 않았습니다"가 발생했습니다.

ServerReference.ServiceClient client = new ServerReference.ServiceClient(); 

var s = client.GetBrand("Audi", false); 

"개체 참조가 개체의 인스턴스로 설정되지 않았습니다"라는 예외가 발생합니다. s 객체가 null이되어서는 안됩니다 (우리가 작업 한 동일한 프로젝트에서 모두 사용했던 localhost에서 서비스를 시도했습니다).

stackstrace를 보면 다음과 같이 보입니다.

21.6.2012 16:16:29 

개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

Server stack trace: 
    at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter) 
    at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) 
    at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
    at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
    at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 

의견이 있으십니까 ?? P.S WCF 서비스가 호스팅되는 CPU가 비주얼 스튜디오가 없기 때문에 디버그 할 수 없습니다.

+2

[WcfTestClient] (http://msdn.microsoft.com/en-us/library/bb552364.aspx)가 호스팅 서비스에서 작동합니까? 범위를 좁혀 구현 여부 또는 서비스 초기화 여부를 확인하십시오.계약이 변경되었을 수도 있습니다 (메타 데이터를 마지막으로 가져온 경우에 따라 다름)로 인해 서비스가 인스턴스화되지 않을 수 있습니다. –

답변

2

의견에서 제안했듯이 WcfTestClient을 사용하여 데이터를 가져올 수 있는지 확인하십시오. 이 둘은 서비스가 작동 중임을 확인하고 메소드 호출을 거의 단위 테스트하여 클라이언트 관점에서 작동하는지 확인합니다.

두 번째로, (SO에 게시하도록 물주지 않는 한) correct WCF call method을 사용하면 이러한 종류의 문제를 피할 수 있습니다. 의존성을 도입하면 실패 (서비스, 고객의 인터넷 연결 또는 다른 방법 임에도 불구하고)를 예측하는 것이 좋습니다.

프로젝트에 대한 다른 정보가 없으면 수정 방법을 설명하기가 어렵습니다. 이전 WSDL, 잘못 구성된 * .config, 서버의 노출되지 않은 끝점 및 기타 문제는 문제의 근원이 될 수 있지만 표시 한 내용을 통해 나는 그것이 무엇인지 모릅니다.

더 많은 정보를 제공 할 수 있다면 더 많은 조언을 통해 답변을 업데이트 할 수있어서 기쁩니다. 지금은 서버에서 enabling WCF tracing을보고 로그를 다시보고 클라이언트의 호출을 확인하고 확인하는 것 외에도 서버의 끝 부분에 문제가 없는지 확인하십시오.

+0

WCF 추적은 현재 현재 작동 중입니다. (이유를 이해하지 못합니다) ... 제 연구에 따르면 현재 바인딩은 무언가를 가지고 있습니다. 내가 알아 채고 흥미로운 점은 테스트 클라이언트를 사용하고 로컬 호스트에있는 서비스를 호출 할 때 null 매개 변수를 사용하여이를 호출하면 IIS 호스팅 서비스와 동일한 오류가 반환된다는 것입니다 (모든 매개 변수 포함). 그게 고려해야 할 부분 이니, p.s는 내가 여기에 더 잘 이해하기 위해서 여기에 글을 올리면 좋겠다. – user1279173

1

당신은 그것을 통해 디버깅 할 필요가 없습니다. web.config에 WCF 추적 설정을 추가하기 만하면 원래 오류에 대한 정보를 얻을 수 있습니다. http://msdn.microsoft.com/en-us/library/ms733025.aspx

+0

copy-id 코드와 내 webconfig에서 puted가 발생했지만 아무 일도 일어나지 않았다. 파일을 만들지 않았거나 그런 파일이 없습니다 – user1279173

+0

다른 ID를 사용하여 응용 프로그램 풀에서 WCF 서비스를 실행하고 있습니까? 그렇다면 해당 디렉토리에 대한 완전한 제어 권한이 있는지 확인해야합니다. 나는 정보 레벨 추적과 함께, 당신은 단지 서비스를 브라우징함으로써 테스트 할 수 있다고 생각한다. 당신은 Verbose 레벨을 필요로 할 수도있다. – Rich

0

제 프로젝트에서 동일한 문제가 있습니다. 제 경우에는 서비스 생성자에서 예외가 발생했지만 모든 메소드를 호출 할 때만 트리거된다는 것을 알았습니다.

0

추적을 내보내고 추적 수준을 설정하고, 활동 추적 및 전파를 설정하여 종단 간 추적 상관 관계를 지원하고, 추적 수신기에 추적을 설정하도록 추적 원본을 구성하십시오.

WCF (Windows Communication Foundation)는 진단 추적을 위해 다음 데이터를 출력합니다. 응용 프로그램의 모든 구성 요소 (예 : 작업 호출, 코드 예외, 경고 및 기타 중요한 처리 이벤트)의 프로세스 중요 시점 추적. 추적 기능이 오작동하는 경우 Windows 오류 이벤트가 발생합니다. Event Logging in WCF을 참조하십시오.