WSDL을 사용하여 WCF WebService를 설정하려고했습니다. 얼마 전에 제공되었지만 제대로 작동하지 않아 좌절했습니다. 필자가 구축중인 서비스는 클라이언트 (SOAP WSI/PI 사용)에서 SOAP 메시지를 수신하고 메시지의 내용을 CMS에 푸시하는 일종의 미들웨어 역할을해야합니다. 그것은 약간 효과가있는 것처럼 보이지만 복잡한 유형의 값을 가져 오지 못합니다.WCF SOAP 서비스 : Complex Type 속성이 null입니다.
나는 가능한 한 완벽 해 지려고 노력하지만, 매우 온건 한 프로그래머이기 때문에 가치있는 정보가 누락되거나 잘못된 용어를 사용할 수 있습니다. 도움이 될만한 것을 놓친다면 알려주세요. 나는 서비스를 설정하고있는 고객을 숨기기 위해 공유하고있는 스키마에서 네임 스페이스를 제거합니다.
WebService를 구축하는 데 사용하려고하는 고객으로부터 4 개의 파일을 받았습니다.
- 1 개 Service.wsdl
- 1 개 Serivce.xsd
- 2 × ExportXMLSchema.xsd
내가 가진 유일한 문제는 ExportXMLSchema.xsd의 I에 정의 된 복합 유형과 관련 있기 때문에 그것들의 내용을 공유 할 것입니다.
ExportXMLSchema1.xsd :
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://company.org/mail/hrm/JobPublication" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://company.org/mail/hrm/JobPublication" xmlns:p7="http://company.org/mail/global/datatypes">
<xsd:import namespace="http://company.org/mail/global/datatypes" schemaLocation="file:///localfile/ExportXMLSchema2.xsd"/>
<xsd:attributeGroup name="JobPositionPublication_Enhncmnt"/>
<xsd:group name="JobPositionPublication_Enhncmnt">
<xsd:sequence>
<xsd:element name="ObjectSearchID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf30a94311dfc60c00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PositionPlaceID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf31a94311dfc92300248143fb3c</xsd:appinfo>
<xsd:documentation>Formatieplaats ID</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="PositionPlaceDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf32a94311df9bfa00248143fb3c</xsd:appinfo>
<xsd:documentation>Formatieplaats omschrijving</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="City" type="p7:City" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf33a94311df9f3900248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeFrom" type="p7:PostalCode" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf34a94311dfa86b00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeTo" type="p7:PostalCode" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf35a94311dfb7f900248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">89c7af94b14111e19869984be172d7ee</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="TemporaryWorkerType" type="p7:TemporaryWorkerType" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">767caf37a94311dfa43d00248143fb3c</xsd:appinfo>
<xsd:documentation>THK</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="PublicationFunctionID" type="p7:PublicationFunctionID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">ca6011b0a94711dfbc1200248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="JobTitle" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">c0807df0a94811dfc40e00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="JobID" type="p7:JobPositionPostingID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">c0807df1a94811df8d5000248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="Availability" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">d48077a0a94911dfa0bc00248143fb3c</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DayOfWeek" type="p7:DayOfWeek">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">e9bfdac0bc0411df9b5e18a9058b3aa3</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DayPart" type="p7:DayPart">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">e9bfdac1bc0411dfbee818a9058b3aa3</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="TeamID" type="p7:TeamID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a398b3c311e1c9ba78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="TeamIDDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a399b3c311e1a1f678e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaID" type="p7:AreaID" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39ab3c311e1bf1478e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaIDDescription" type="p7:DescriptionHR" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">4f871a83b3c911e1b30c78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="Address" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39db3c311e1bef978e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Street" type="p7:StreetNameHR" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39bb3c311e187e278e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="City" type="p7:City" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39cb3c311e18f8e78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeFrom" type="p7:PostalCode" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">943704b5b3c211e1c47678e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="PostalCodeTo" type="p7:PostalCode" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">943704b6b3c211e1b3f578e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="AreaDescription" type="p7:DescriptionHR" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">943704b7b3c211e186c378e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="WorkAgreementExtra" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a2b3c311e19c5178e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HourPerDayMin" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39eb3c311e1901e78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HourPerDayMax" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a39fb3c311e1927578e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HourPerWeekMin" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a0b3c311e197c978e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HourPerWeekMax" type="p7:Hours" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a1b3c311e1c17078e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Depot" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a6b3c311e1b8c278e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DepotPostalCode" type="p7:PostalCode" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a3b3c311e1a2f178e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DepotStreet" type="p7:StreetNameHR" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a4b3c311e1bf2478e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DepotCity" type="p7:City" minOccurs="0">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21a3a5b3c311e19be578e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AvailabilityOptional" minOccurs="0" maxOccurs="unbounded" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c9b3c311e1ce3b78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="DayOfWeekOpt" type="p7:DayOfWeek">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c7b3c311e18cea78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="DayPartOpt" type="p7:DayPart">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3c8b3c311e1cc8478e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="AmountDayRequired" type="p7:Count" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3cab3c311e1b2cb78e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
<xsd:element name="HomeDelivery" type="p7:Count" minOccurs="0" form="qualified">
<xsd:annotation>
<xsd:appinfo source="http://sap.com/xi/TextID">7a21c3cbb3c311e1a63978e3b50a88fe</xsd:appinfo>
<xsd:documentation/>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:group>
</xsd:schema>
ExportXMLSchema2.xsd : 내 프로젝트에 서비스 참조를 가져 오는 여러 가지 방법을 시도
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://company.org/mail/global/datatypes" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://company.org/mail/global/datatypes">
<xsd:simpleType name="LanguageCode">
<xsd:restriction base="xsd:language">
<xsd:minLength value="2"/>
<xsd:maxLength value="9"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DayPart.Content">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Part of the day</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TeamID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for Team IDs (Used for ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DescriptionHR">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic description datatype used for HR objects</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="AreaID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for Area IDs (Used for ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="StreetNameHR">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic Streetname datatype used for HR objects (40 pos.)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Count">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for Count (Used by ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="TemporaryWorkerType">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Temporary Worker (Tijdelijke hulpkracht (THK): N, K of J); TNT specific</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="JobPositionPostingID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic object for JobPosting IDs (Used for ERECRUIT)</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PostalCode">
<xsd:restriction base="xsd:token">
<xsd:minLength value="1"/>
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="Hours">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Generic datatype for hours</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:int">
<xsd:maxInclusive value="2"/>
<xsd:minInclusive value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PublicationFunctionID">
<xsd:annotation>
<xsd:documentation xml:lang="EN">PublicationFunctionID for ERECRUIT</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:maxLength value="3"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="City">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Cityname TNT</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:maxLength value="60"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DayOfWeek.Content">
<xsd:annotation>
<xsd:documentation xml:lang="EN">Description day of the week</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="DayPart">
<xsd:simpleContent>
<xsd:extension base="DayPart.Content">
<xsd:attribute name="languageCode" type="LanguageCode"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="DayOfWeek">
<xsd:simpleContent>
<xsd:extension base="DayOfWeek.Content">
<xsd:attribute name="languageCode" type="LanguageCode"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:schema>
. 그것을 Service Reference로 추가하고 SVCUTIL을 사용하여 클래스 파일을 만들고 내 프로젝트로 가져옵니다 (기본적으로 원래 Service Reference를 덮어 씀). 내 서비스를 설정하고 로컬 또는 개발 서버에서 호스팅 할 때 서비스가 정상적으로 작동합니다. 그러나 클라이언트에서받은 메시지 나 SoapUI를 사용하여 보내는 메시지는 복합 형식 속성을 포함하지 않습니다.
<n0:Availability>
<DayOfWeek>MAANDAG</DayOfWeek>
<DayPart>OCHTEND</DayPart>
</n0:Availability>
<n0:Availability>
<DayOfWeek>DINSDAG</DayOfWeek>
<DayPart>OCHTEND</DayPart>
</n0:Availability>
<n0:Availability>
<DayOfWeek>WOENSDAG</DayOfWeek>
<DayPart>OCHTEND</DayPart>
</n0:Availability>
(N0 네임 스페이스 일치 : http://company.org/mail/hrm/JobPublication)
예 메시지는 다음과 같이 이용 가능성의 목록을 포함 SoapUI에서 제대로
이 메시지의 유효성을 확인,하지만 내 서비스에 대한 메시지를 값을 수신 할 때 DayOfWeek 및 DayPart는 null입니다. 나는 "Availbility"세 가지 값을 받았으므로 부분적으로 작동합니다.
/ImportXmlTypes 및/또는/Serializer : XmlSerializer와 같은 옵션을 사용하여 SVCUTIL로 클래스 파일을 생성 해봤지만 아무 것도 작동하지 않는 것 같습니다. 이 보드에서 발견 된 제안 중 아무 것도 나를 위해 일한 것 같지 않습니다. 잘만 누군가 내가 간과 한 것을 지적 할 수 있습니다.
미리 감사드립니다.