[c#] WSDL 파일에서 Visual Studio에서 웹 서비스 프록시 만들기

내 애플리케이션은 온라인 WSDL 정의가없는 웹 서비스와 통신해야합니다. 그러나 개발자는 저에게 WSDL 파일을 제공했습니다.

공용 WSDL을 사용하면 Visual Studio에서 서비스 참조 마법사를 사용하여이 코드를 생성 할 수 있습니다. 그러나 공개 WSDL 없이는 작동하지 않는 것 같습니다.

이 WSDL 파일을 사용하여이 웹 서비스와 통신하기위한 코드를 어떻게 생성합니까?



답변

WSDL.exe를 사용한 다음 생성 된 파일 (.cs)을 프로젝트에 포함 해보 십시오.

Visual Studio 명령 프롬프트 (시작 메뉴의 Visual Studio / 도구 아래)를 실행하고 다음을 입력합니다.

>wsdl.exe [path To Your WSDL File]

그러면 복사 / 이동하고 프로젝트에 포함하는 파일이 뱉어집니다. 이 파일에는 서비스에 대한 프록시 인 클래스가 포함되어 있고 해당 클래스의 인스턴스를 실행하면 즉시 설정할 수있는 URL 속성과 호출 할 수있는 메서드가 있습니다. 또한 서비스 인터페이스를 통해 전달되는 모든 / 모든 복잡한 개체에 대한 클래스를 생성합니다.


답변

WSDL.exe를 사용해도 작동하지 않았지만 (누락 된 유형에 대한 오류가 발생했습니다) VS에서 내 프로젝트를 마우스 오른쪽 단추로 클릭하고 “서비스 참조 추가”를 선택할 수있었습니다. 주소 필드에 wsdl 파일의 경로를 입력하고 “이동”을 누르십시오. 그것은 모든 적절한 유형을 찾을 수있는 것처럼 보였고 내 프로젝트에 직접 클래스를 추가했습니다.


답변

참고로 모든 파일이 로컬에있는 경우 (wsdl 파일뿐만 아니라 xsd 파일도) 다음과 같은 방식으로 wsdl.exe를 호출 할 수 있습니다.

wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl]

이러한 방식으로 wsdl.exe는 모든 종속성을 로컬로 확인하고 프록시 클래스를 올바르게 생성 할 수 있습니다.

누군가의 시간을 절약 할 수있을 것입니다. 온라인에서 서비스를 이용할 수 없을 때 “누락 된 유형”오류를 해결합니다.


답변

.NET Framework SDK와 함께 제공되는 WSDL To Proxy 클래스 도구를 사용해보십시오 . 전에 사용한 적이 없지만 확실히 필요한 것 같습니다.


답변

명령 줄에서 프록시 를 만들기위한 Microsoft 문서 가 있습니다 WCF.

다음 wsdl.exe과 유사한 위치에서의 로컬 사본을 찾을 수 있습니다 . C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools( 여기에서 자세히 알아보기 )

결국 Command다음과 같이 보일 것입니다.

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\wsdl.exe"
 /language:CS /n:"My.Namespace" https://www.example.com/service/wsdl


답변

디스크에 파일을 저장하고 다음을 URL로 사용하십시오.

file://your_path/your_file.wsdl


답변

웹 서비스의 실제 바인딩 URL이 파일에 있으므로 로컬 시스템에서 다음과 같은 간단한 단계를 수행 할 수 있습니다.

1) 파일을 로컬 컴퓨터에 저장합니다. 예 :

C:\Documents and Settings\[user]\Desktop\Webservice1.asmx

2) Visual Studio에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 웹 참조 추가를 선택하면 대화 상자가 열립니다.

3) URL 상자에서 C : \ Documents and Settings [user] \ Desktop \ Webservice1.asmx 위의 로컬 파일 위치를 복사하고 다음을 클릭합니다.

4) 이제 기능이 표시되면 참조 용 이름을 선택하고 참조 추가를 클릭합니다.

5) 완료되었습니다! 애플리케이션의 네임 스페이스로 사용할 수 있습니다. 어쨌든 서비스의 실제 URL은 바인딩 섹션의 파일에 있기 때문에 로컬 파일을 사용했다고 걱정하지 마십시오.