wcf 웹 서비스 인스턴스를 만드는 동안 InvalidOperationException이 발생했습니다.

StackOverflow https://stackoverflow.com/questions/24993

  •  09-06-2019
  •  | 
  •  

문제

클래스 라이브러리에서 참조되는 WCF 웹 서비스가 있습니다.프로젝트가 실행 된 후 클래스 라이브러리 내부에서 서비스 클라이언트 개체를 만들 때 다음 메시지와 함께 InvalidOperationException이 발생합니다. <인용구>

계약을 참조하는 기본 끝점 요소를 찾을 수 없습니다. ServiceModel 클라이언트의 'MyServiceReference.IMyService' 구성 섹션.구성 파일이 없기 때문일 수 있습니다. 애플리케이션에 대해 찾거나 일치하는 엔드 포인트 요소가 없기 때문에 이 계약은 클라이언트 요소에서 찾을 수 있습니다.

인스턴스를 만드는 데 사용하는 코드는 다음과 같습니다. 라코 디스

MyServiceClient가 상속되는 위치

System.ServiceModel.ClientBase

이 문제를 어떻게 해결합니까?

참고 : 단순히 동일한 서비스 개체를 생성하고이를 호출하여 문제없이 작동하는 별도의 콘솔 애플리케이션이 있습니다.

도움이 되었습니까?

해결책

<인용구>

다음은 클래스 라이브러리의 app.config 파일입니다.

이 구성 설정을 기본 앱의 구성 파일에 넣어야합니다..NET 응용 프로그램 (클래스 라이브러리를 호출 함)은 라이브러리 구성 파일이 아닌 자체 구성 파일의 데이터를 사용합니다.

다른 팁

또는 코드에서 엔드 포인트를 설정할 수 있습니다.

http://msdn.microsoft.com/en-us/library/ms731862.aspx 라코 디스

비슷한 경우가있었습니다. 웹 서비스를 호출하는 클래스 라이브러리가 있었고 클래스 라이브러리의 .DLL을 호출하는 .EXE가있었습니다. .DLL 구성이 아니라 사용되는 .EXE 구성 파일이라고 생각합니다.

그러나 Richard가 위에서 말했듯이 나는 네임 스페이스를 정규화해야했습니다. 약간의 고통입니다. 아래는 정확히 내가 변경 한 것입니다. 고통은 두 곳에서 변경해야한다는 것입니다. 하나는 서비스 참조를 만들 때 생성되는 reference.cs에 있고 다른 하나는 구성 파일에 있습니다. 따라서 웹 서비스를 변경하고 "참조 업데이트"를 수행 할 때마다 C # 코드를 다시 변경해야합니다.

1) 실제로 reference.cs에서 ConfigurationName을 다음과 같이 변경해야합니다.

보낸 사람 : [System.ServiceModel.ServiceContractAttribute(Namespace = "http://TFBIC.RCT.BizTalk.Orchestrations", ConfigurationName = " RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations")]

받는 사람 : [System.ServiceModel.ServiceContractAttribute(Namespace = "http://TFBIC.RCT.BizTalk.Orchestrations", ConfigurationName = "TFBIC.RCT.HIP.Components.RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations")]

2) 그런 다음 모든 관련 app.config (.dll 및 .exe의 경우)에서 "contract"값을 다음과 같이 변경합니다.

보낸 사람 :

<종점 주소= http : // nxwtest08bt1 .dev.txfb-ins.com / TFBIC.RCT.BizTalk.Orchestrations / WcfService_TFBIC_RCT_BizTalk_Orchestrations.svc binding="wsHttpBinding"bindingConfiguration="WSHttpBinding_ITwoWayAsync" contract="RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations" name="WSHttpBinding_ITwoWayAsync">

받는 사람 :

<종점 주소= http : // nxwtest08bt1 .dev.txfb-ins.com / TFBIC.RCT.BizTalk.Orchestrations / WcfService_TFBIC_RCT_BizTalk_Orchestrations.svc binding="wsHttpBinding"bindingConfiguration="WSHttpBinding_ITwoWayAsync" contract="TFBIC.RCT.HIP.Components.RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations"name="WSHttpBinding_ITwoWayAsync">

명확하게 말하면 전체 네임 스페이스가 무엇인지 어떻게 알았습니까? 프로그램의 네임 스페이스는 TFBIC.RCT.HIP입니다. 그 안에 C # 코드에는 네임 스페이스 문 : 라코 디스

app.config 파일을 게시하면 도움이 될 것입니다. 이러한 종류의 오류는 <endpoint> 블록의 문제를 가리키는 경향이 있기 때문입니다.계약 속성이 귀하에게 맞는지 확인하십시오.

편집 : 계약 가치를 완전히 검증하십시오.전체 네임 스페이스를 사용하십시오.필요하다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top