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


101

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

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

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

답변:


116

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

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

>wsdl.exe [path To Your WSDL File]

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


2
감사! 그리고 내 보낸 파일의 경로에 / o 매개 변수를 사용할 수 있습니다. 예 :> wsdl.exe example.com/service.wsdl / o : C : \ Users \ X \ Desktop
gkonuralp

2
생성 된 유사한 파일과의 충돌을 방지하기 위해 모든 클래스를 포함하는 네임 스페이스를 선택적으로 수동으로 추가합니다.
Blue Clouds

138

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


3
같은 시나리오에 직면했고 귀하의 제안으로 많은 좌절감과 머리카락이 절약되었습니다. 당연한 대표가 당신에게 주어졌습니다. (간접 그 결과, 모든 사이트 :)에 100있어)
그림자 마법사가 당신을 위해 귀입니다

나는 파일 수입이 시도,하지만 난 내 코드 클래스에서 볼 수 없습니다
guiomie

1
MSVC 2015를 사용하여이 방법을 시도했지만 URL을 사용하여 wsdl 파일 처리를 거부했습니다. 나는 앤드류 M.에 의해 기술 된 방법을 사용 그래서
헤르만

1
웹 서비스에 액세스 할 수있는 권한이없는 개발 PC에서 이것을 시도했습니다. .wsdl 파일이 로컬에 있음에도 불구하고 "Go"를 누르면 서비스 연결을 시도했습니다. 그래서 참조를 추가 할 수 없었습니다. 이 상황에서는 Andrew M.의 솔루션이 선호되어야한다고 생각합니다. 잘 작동했습니다.
gkonuralp

@jeffaudio im은 비슷한 문제에 직면하여 웹 프로젝트에 대한 서비스 참조를 추가 할 수 있지만 wsdl.exe를 사용하면 프록시 파일을 생성 할 수 없습니다. 어떠한 제안 ..???
prakash r

15

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

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

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

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



3

명령 줄에서 프록시 를 만들기위한 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

1

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

file://your_path/your_file.wsdl

문제의 파일을 먼저 인증 후 다운로드해야했기 때문에 이것이 저에게 도움이 된 유일한 파일입니다. 감사!
Kevin Radcliffe

-1

웹 서비스의 실제 바인딩 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은 바인딩 섹션의 파일에 있기 때문에 로컬 파일을 사용했다고 걱정하지 마십시오.


2
이것은 이미이 기존 답변 에서 제안되었습니다. 왜 반복합니까?
그림자 마법사가 당신을 위해 귀입니다

질문이 wsdl에 관한 것인데 왜 asmx 파일입니까?
Blue Clouds
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.