0

서비스 참조로 PeopleSoft WSDL을 가져 오려고하면 Visual Studio 2010과 2012 모두에 불투명 오류가 발생합니다.Visual Studio의 Opaque WSDL 스키마 오류

내가, 서비스 참조 추가를 선택 주소 아래의 URL을 붙여 서비스 참조을 마우스 오른쪽 버튼으로 클릭 한 후, 이동충돌 OK을했다.

나는이 불투명 오류 얻을 : Opaque error message from Visual Studio

http://xmlns.oracle.com/Enterprise/Tools/schemas

아무것도를 해결하기 위해 표시하지 않습니다,하지만 난 상관 없어 거의 확실 해요.

Visual Studio와 동일한 PC에서 soapUI으로 테스트했는데 모든 것이 올바르게 작동합니다. SOAP 서비스에 액세스하여 예상되는 응답을 얻을 수 있습니다.

오류 메시지의 불투명도가 혼란스럽고 soapUI에서 작동하므로 WSDL이 양호한 것으로 추정됩니까? 나는이 오류를 조사했지만 지금까지 아무 것도 발견하지 못했다.

<?xml version="1.0"?> 
<wsdl:definitions name="A_PROGRAM_SERVICE.1" targetNamespace="http://xmlns.oracle.com/Enterprise/HCM/schemas/A_PROGRAM_SERVICE.1" xmlns:A_PROGRAM_REQUEST_MSG.VERSION_1="http://xmlns.oracle.com/Enterprise/Tools/schemas" xmlns:A_PROGRAM_RESPONSE_MSG.VERSION_1="http://xmlns.oracle.com/Enterprise/Tools/schemas" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://xmlns.oracle.com/Enterprise/HCM/schemas/A_PROGRAM_SERVICE.1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy"> 
    <wsp:UsagePolicy wsdl:Required="true"/> 
    <plnk:partnerLinkType name="A_PROGRAM_SERVICE_PartnerLinkType"> 
    <plnk:role name="A_PROGRAM_SERVICE_Provider"> 
     <plnk:portType name="tns:A_PROGRAM_SERVICE_PortType"/> 
    </plnk:role> 
    </plnk:partnerLinkType> 
    <wsdl:types> 
    <xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <xsd:import namespace="http://xmlns.oracle.com/Enterprise/Tools/schemas" schemaLocation="A_PROGRAM_REQUEST_MSG.VERSION_1.xsd"/> 
     <xsd:import namespace="http://xmlns.oracle.com/Enterprise/Tools/schemas" schemaLocation="A_PROGRAM_RESPONSE_MSG.VERSION_1.xsd"/> 
    </xsd:schema> 
    </wsdl:types> 
    <wsdl:message name="A_PROGRAM_REQUEST_MSG.VERSION_1"> 
    <wsdl:documentation>A Data Repository</wsdl:documentation> 
    <wsdl:part element="A_PROGRAM_REQUEST_MSG.VERSION_1:InputParameters" name="parameter"/> 
    </wsdl:message> 
    <wsdl:message name="A_PROGRAM_RESPONSE_MSG.VERSION_1"> 
    <wsdl:documentation>A Data Repository</wsdl:documentation> 
    <wsdl:part element="A_PROGRAM_RESPONSE_MSG.VERSION_1:root" name="parameter"/> 
    </wsdl:message> 
    <wsdl:portType name="A_PROGRAM_SERVICE_PortType"> 
    <wsdl:operation name="A_PROGRAM_OP"> 
     <wsdl:documentation>A Data Repository</wsdl:documentation> 
     <wsdl:input message="tns:A_PROGRAM_REQUEST_MSG.VERSION_1" name="A_PROGRAM_REQUEST_MSG.VERSION_1"/> 
     <wsdl:output message="tns:A_PROGRAM_RESPONSE_MSG.VERSION_1" name="A_PROGRAM_RESPONSE_MSG.VERSION_1"/> 
    </wsdl:operation> 
    </wsdl:portType> 
    <wsdl:binding name="A_PROGRAM_SERVICE_Binding" type="tns:A_PROGRAM_SERVICE_PortType"> 
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
    <wsdl:operation name="A_PROGRAM_OP"> 
     <soap:operation soapAction="A_PROGRAM_OP.v1" style="document"/> 
     <wsp:Policy wsu:Id="UsernameTokenSecurityPolicyPasswordOptional" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
     <wsp:ExactlyOne> 
      <wsp:All> 
      <wsse:SecurityToken wsp:Usage="wsp:Required" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
       <wsse:TokenType>wsse:UserNameToken</wsse:TokenType> 
       <Claims> 
       <SubjectName MatchType="wsse:Exact"/> 
       <UsePassword wsp:Usage="wsp:Optional"/> 
       </Claims> 
      </wsse:SecurityToken> 
      </wsp:All> 
     </wsp:ExactlyOne> 
     </wsp:Policy> 
     <wsdl:input name="A_PROGRAM_REQUEST_MSG.VERSION_1"> 
     <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal"/> 
     </wsdl:input> 
     <wsdl:output name="A_PROGRAM_RESPONSE_MSG.VERSION_1"> 
     <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="literal"/> 
     </wsdl:output> 
    </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="A_PROGRAM_SERVICE"> 
    <wsdl:documentation>A Data Repository</wsdl:documentation> 
    <wsdl:port binding="tns:A_PROGRAM_SERVICE_Binding" name="A_PROGRAM_SERVICE_Port"> 
     <soap:address location="http://some_url_here/PSIGW/PeopleSoftServiceListeningConnector/SYSTEMNAME"/> 
    </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 
+0

이 WSDL의 URL을 게시 할 수 있습니까? 홀수 한 것은 두 개의 가져 오기에 동일한 네임 스페이스가 사용된다는 것입니다. –

+0

@ JohnSaunders : 감사합니다! 안타깝게도 URL은 기관 네트워크 외부에서 액세스 할 수 없습니다. –

+0

@ JohnSaunders : 죄송합니다. 너무 빨리 입력하십시오. 동일한 네임 스페이스를 두 번 사용하는 것이 잘못 되었습니까? 하지만 아마도 그 오류를 설명합니다. 두 번째 인스턴스의 네임 스페이스를 변경하면 어떻게되는지 보겠습니다. –

답변

0

깊은 분석과 함께, 내가 그것을 알아 냈 :

여기 (모호한 URL 및 서비스 세부 사항에 소독)을 WSDL입니다. 가져온 XSD 중 하나에 루트 요소에 maxOccurs="unbounded"이 있습니다. 루트 요소는 XML 문서에서 한 번만 나타낼 수 있기 때문에 이는 의미가 없습니다.

Visual Studio에서보다 명확한 오류 메시지가 나타날 수 있습니다.

@JohnSaunders에게 감사의 말을 전합니다.

+0

이것이 그 것이지 확인했습니다. 서비스 주인은 XSD에서 'maxOccurs' 속성을 제거했습니다. 이제 제대로 작동합니다. Microsoft는 오류 메시지를 통해 더 나은 작업을 수행해야합니다. –