wsdl.exe 오류:네임스페이스 '...'에서 바인딩 '...'을(를) 가져올 수 없습니다.

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

  •  09-06-2019
  •  | 
  •  

문제

내가 만든 WSDL에서 wsdl.exe를 실행할 때 다음 오류가 발생합니다.

오류:'SomeNS' 네임스페이스에서 'SomeBinding' 바인딩을 가져올 수 없습니다.

  • 'someOperation' 작업을 가져올 수 없습니다.
  • 이러한 멤버는 파생되지 않을 수 있습니다.

나는 문서 리터럴 스타일을 사용하고 있으며, 내가 아는 한 모든 규칙을 따르고 있습니다.

요약하면 유효한 WSDL이 있지만 도구가 이를 좋아하지 않습니다.

내가 찾고 있는 것은 wsdl.exe 도구에 대한 많은 경험이 있고 내가 모르는 비밀 문제에 대해 알고 있는 사람이 있는지입니다.

도움이 되었습니까?

해결책

나는 같은 오류 메시지를 보았습니다.잠시 검색한 결과 wsdl 파일 외에 xsd 파일도 제공할 수 있다는 사실을 알게 되었습니다.따라서 다음과 같이 wsdl 명령 끝에 .wsdl 외에 .xsd 파일을 포함/가져옵니다.

wsdl.exe myWebService.wsdl myXsd1.xsd myType1.xsd myXsd2.xsd ...

Wsdl은 몇 가지 경고를 표시했지만 괜찮은 서비스 인터페이스를 만들었습니다.

다른 팁

때로는 코드를 변경해야 할 때도 있습니다.메시지 부분 이름은 동일해서는 안됩니다;)

<wsdl:message name="AnfrageRisikoAnfrageL">
    <wsdl:part name="parameters" element="his1_0:typeIn"/>
</wsdl:message>
<wsdl:message name="AnfrageRisikoAntwortL">
    <wsdl:part name="parameters" element="his1_0:typeOut"/>
</wsdl:message>

이에:

<wsdl:message name="AnfrageRisikoAnfrageL">
    <wsdl:part name="in" element="his1_0:typeIn"/>
</wsdl:message>
<wsdl:message name="AnfrageRisikoAntwortL">
    <wsdl:part name="out" element="his1_0:typeOut"/>
</wsdl:message>

@thehhv 솔루션이 정확합니다.추가할 필요가 없는 해결 방법이 있습니다. xsd손으로요.

가는 대신 서비스를 받으십시오. ?wsdl 이동 ?singleWsdl (아래 스크린샷)

enter image description here

그런 다음 페이지를 다른 이름으로 저장 .wsdl 파일(제공됩니다. .svc 그러니 바꾸세요)

그럼 열어봐 Visual studio command prompt (Win 7) 시작 -> 모든 프로그램 -> Visual Studio 2013 -> Visual Studio 도구 -> VS2013 x64 기본 도구 명령 프롬프트(비슷할 수 있음)에서 찾을 수 있습니다.
그런 다음 다음 명령을 실행하십시오. Visual studio command prompt (C:\WebPricingService.wsdl 대신에 wsdl을 저장한 곳이 있습니다. 단, 우리가 매우 유사하다고 생각하고 동일한 파일 이름과 위치를 선택하는 경우는 제외됩니다.)

wsdl.exe C:\WebPricingService.wsdl

@thehhv가 말했듯이 몇 가지 경고가 표시되지만 여전히 클라이언트를 생성합니다. C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\WebPricingService.cs (또는 컴퓨터에 어디에 저장하든지 - '파일 쓰기'라고 읽는 콘솔 출력을 확인하세요)

enter image description here

이것이 당신의 시간을 절약해주기를 바랍니다.

내 경우에는 문제가 달랐으며 잘 설명되어 있습니다. 여기:

부품 이름이 "매개변수"일 때마다 .Net에서는 doc/lit/wrapped가 사용된다고 가정하고 이에 따라 프록시를 생성합니다."매개변수"라는 단어가 사용되더라도 wsdl이 doc/lit/wrapped(마지막 예에서와 같이)가 아닌 경우 .Net에서 일부 오류가 발생할 수 있습니다.어떤 오류인가요?당신은 올바르게 추측했습니다:"이 멤버는 파생되지 않을 수 있습니다."이제 우리는 오류가 무엇을 의미하는지 이해할 수 있습니다..Net은 doc/lit/wrapped가 사용된다고 생각하여 루트 요소를 생략하려고 합니다.그러나 이 요소는 더미가 아니기 때문에 제거할 수 없습니다. 몇 가지 파생 유형 중에서 사용자가 적극적으로 선택해야 합니다.

수정 사항은 다음과 같으며 나에게 완벽하게 작동했습니다.

이를 해결하는 방법은 텍스트 편집기에서 wsdl을 열고 부품 이름을 다음에서 변경하는 것입니다. "매개변수" 에게 "매개변수1".이제 .Net은 doc/lit/bare 프록시를 생성하는 방법을 알게 됩니다.이는 새 래퍼 클래스가 프록시의 루트 매개변수로 표시된다는 의미입니다.이는 좀 더 지루한 API일 수 있지만 유선 형식에는 영향을 미치지 않으며 프록시는 완전히 상호 운용 가능합니다.

(제가 강조함)

누군가가 이 벽에 부딪히는 경우 제 경우 오류의 원인은 다음과 같습니다.

나는 수술을 받았습니다 :

<wsdl:operation name="FormatReport">
  <wsdl:documentation>Runs a report, which is returned as the response</wsdl:documentation>
  <wsdl:input message="FormatReportRequest" />
  <wsdl:output message="FormatReportResponse" />
</wsdl:operation>

입력을 받습니다:

<wsdl:message name="FormatReportRequest">
  <wsdl:part name="parameters" element="reporting:FormatReportInput" />
</wsdl:message>

그리고 또 다른 작업:

<wsdl:operation name="FormatReportAsync">
  <wsdl:documentation>Creates and submits an Async Report Job to be executed asynchronously by the Async Report Windows Service.</wsdl:documentation>
  <wsdl:input message="FormatReportAsyncRequest" />
  <wsdl:output message="FormatReportAsyncResponse" />
</wsdl:operation>

입력을 받아:

  <wsdl:message name="FormatReportAsyncRequest">
    <wsdl:part name="parameters" element="reporting:FormatReportInputAsync" />
  </wsdl:message>

그리고 입력 요소는 두 가지 유형의 인스턴스입니다.

<xsd:element name="FormatReportInput" type="reporting:FormatReportInputType"/>
<xsd:element name="FormatReportInputAsync" type="reporting:FormatReportAsyncInputType"/>

여기에 문제가 있습니다. reporting:FormatReportAsyncInputType 유형은 확장(파생)됩니다. reporting:FormatReportInputType 유형.그것이 도구를 혼동하고 "이 회원들이 도출되지 않을 수 있습니다"라는 이유입니다. 오류.허용된 답변에서 제안에 따라 문제를 해결할 수 있습니다.

UPS Shipping wsdl을 사용하여 이 작업을 수행하고 다른 지역(debug,dev,prod) 등에 대해 구축할 때 dev를 prod URL로 교환하려는 경우.아래 명령을 사용하여 Ship.wsdl에서 vb 또는 C# 파일을 생성한 다음 이 경우 Ship.vb 파일의 값을 재정의합니다.

WSDL /Language:VB /out:"C:\wsdl\Ship.vb" "C:\wsdl\Ship.wsdl"  C:\wsdl\UPSSecurity.xsd  C:\wsdl\ShipWebServiceSchema.xsd  C:\wsdl\IFWS.xsd  C:\wsdl\common.xsd
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top