내 솔루션에서 WCF 서비스 라이브러리 프로젝트를 만들고 이에 대한 서비스 참조가 있습니다. 클래스 라이브러리의 서비스를 사용하므로 클래스 라이브러리 외에도 WPF 응용 프로그램 프로젝트의 참조가 있습니다. 서비스는 간단하게 설정되며 비동기 서비스 기능을 얻기 위해서만 변경됩니다.
서비스 참조를 업데이트하고 싶을 때까지 모든 것이 잘 작동했습니다. 실패했기 때문에 결국 롤백하고 다시 시도했지만 그때도 실패했습니다! 따라서 서비스 참조 업데이트는 변경하지 않고 실패합니다. 왜?!
내가 얻는 오류는 다음과 같습니다.
Custom tool error: Failed to generate code for the service reference
'MyServiceReference'. Please check other error and warning messages for details.
경고는 추가 정보를 제공합니다.
Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension:
System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: List of referenced types contains more than one type with data contract name 'Patient' in
namespace 'http://schemas.datacontract.org/2004/07/MyApp.Model'. Need to exclude all but one of the
following types. Only matching types can be valid references:
"MyApp.Dashboard.MyServiceReference.Patient, Medski.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
"MyApp.Model.Patient, MyApp.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
다음과 같은 두 가지 유사한 경고도 있습니다.
Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_ISomeService']
그리고 동일 :
Custom tool warning: Cannot import wsdl:port ..
이 모든 것이 혼란 스럽습니다. 서비스 참조를 통해 얻은 것 외에는 클라이언트 측 대시 보드에 Patient 클래스가 없습니다. 그래서 그것은 무엇을 의미합니까? 그리고 왜 갑자기 표시됩니까? 기억하십시오 : 나는 아무것도 변경하지 않았습니다!
이제 이것에 대한 해결책이 여기 에서 발견 되었지만 이것이 의미하는 바에 대한 설명은 없습니다. 그래서; 서비스에 대한 "서비스 참조 구성"에서 "참조 된 어셈블리의 유형 재사용"확인란을 선택 취소합니다. 지금 재건하면 문제없이 잘 작동합니다. 그러나 내가 정말로 무엇을 바꿨습니까? 이것이 내 응용 프로그램에 영향을 미칠까요? 그리고 언제 이것을 선택 취소해야합니까? DataContract를 설정 한 유형을 재사용하고 싶지만 더 이상은 사용하지 않습니다. 이 항목을 선택하지 않아도 계속 액세스 할 수 있습니까?