WCF를 사용하여 C#에서 일부 wsdl 및 클라이언트 우선 개발을 수행하고 있습니다 (wsdl 및 클라이언트는 이미 존재하며 서버 측은 구축 중입니다). 나는 이상한 문제가있다. wsdl.exe를 사용하여 .wsdl에서 계약서를 생성했으며 WCF 서비스를 빌드하고 Windows 서비스로 호스트 할 수있었습니다. 그러나 wsdl.exe에서 생성 한 WCF 서비스로 wsdl의 비공개 필드를 표시합니다.
, 나는 http://localhost/Service?wsdl에서 얻을 WSDL 대신 공용 속성의 private 필드를 노출 (예 : 대신OsType
의 나는 대중
OsType
속성과 연결된 전용 변수 인
m_OsTypeField
를 얻을.) 여기
있습니다 이 문제가있는 클래스 중 하나에 대한 속성입니다.[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://xxxxxxx.com/")]
.NET XML serializer는 모든 비공개 멤버를 무시하기 때문에 완전히 혼란 스럽습니다. 이것이 일어날 수있는 이유에 대한 아이디어가 있습니까?
DataContractSerializer와 함께 SvcUtil.exe를 사용하여 생성 된 인터페이스에는 void 매개 변수없는 메서드가 포함되어 있습니다. 메서드는 요청 형식을 받아들이고 응답 형식을 반환해야합니다.이 외에도 데이터 형식이 생성되지 않습니다. SvcUtil으로 뭔가를 놓친 건가요? 또한 중요 :이 경우/ser 옵션을 "auto"로 설정하면 XmlSerializer가 사용됩니다. – oltman
업데이트 : SvcUtil.exe가 생성하고 올바른 wsdl을 게시하도록 코드를 생성했습니다. 몇 가지 질문 : 비록 1) wsdl.exe는 WCF가 아닌 경우에 사용하기위한 것입니까? 2) 내가 SvcUtil을 잘못 사용했다.DataContractSerializer를 사용할 때 exe? – oltman
wsdl.exe는 "구식"ASMX 웹 서비스에 사용되었습니다. - .NET 1.x/2.x 기술 - 지난 세기 거의 ----) –