2009-09-08 5 views
36

클라이언트가 웹 서비스를 생성하는 데 wsdl을 제공합니다.하지만 wsdl.exe 명령을 사용하면이 클래스에서 .cs 클래스가 생성되었습니다. 내 웹 서비스에서 그 클래스를 사용했고 클라이언트에 wsdl을 제공했을 때 스키마와 일치하지 않았습니다. 사실 나는 웹 메서드를 채울 수 있도록 .asmx가 wsdl에서 자동으로 생성되기를 원합니다. 그래서 그것은 그것들의 스키마와 정확히 일치 할 것입니다. 희망이 있습니다.wsdl에서 웹 서비스를 생성하는 방법

+0

실제로 wsdl.exe/server 또는/serverinterface도 시도했지만 여전히 .cs 클래스를 생성합니다. – alice7

답변

4

wsdl /server 또는 wsdl /serverinterface 스위치를 사용하는 것은 어떻습니까? wsdl.exe 명령 줄 속성을 이해하는 한, 그것이 당신이 찾고있는 것입니다.

- ADVANCED - 

/서버 한편

: 왜 당신은 오래된 기술 솔루션을 만드시겠습니까? 이 웹 서비스를 WCF 서비스로 만들지 마십시오. 이것이 현재와 더 현대적이고 더 유연한 방법입니다!

마크


UPDATE :

[WebService(Namespace="http://.......")] 
public abstract partial class OneCrmServiceType : System.Web.Services.WebService 
{ 
    /// <remarks/> 
    [WebMethod] 
    public abstract void OrderCreated(......); 
} 

이 거의 정확히 기본적으로 같은 코드 : 나는 WSDL 파일에 wsdl /server을 사용하는 경우

, 내가 만든이 파일을 얻을 (코드 파일 "yourservice.asmx.cs"에서) 솔루션에 ASMX 파일을 추가 할 때 생성됩니다. WSDL 파일에서 ASMX 파일을 만드는 것에 더 가깝다고 생각하지 않습니다.

는 는

당신은 항상 수동으로 "yourservice.asmx"를 추가 할 수 있습니다 - 정말 많이 포함되어 있지 않습니다

<%@ WebService Language="C#" CodeBehind="YourService.asmx.cs" 
     Class="YourServiceNamespace.YourServiceClass" %> 
+1

그게 사실은 내가 찾고 싶지 않아 프록시 클래스를 생성합니다. 나는 자동으로 abc.asmx를 생성하고 싶습니다. 그리고 나는 WCF를 생각했지만 웹 서비스를 만드는 것으로 간단 해졌습니다. – alice7

3

당신은 자동으로 생성 된 WSDL을 사용하면 서비스를 만들 수있는 WSDL을 일치 보장 할 수 없습니다 인터페이스.

시나리오에서는 웹 사이트의 WSDL 파일을 어딘가에 배치하고 소비자가 해당 URL을 사용해야합니다. "? wsdl"이 WSDL을 반환하지 않도록 web.config에서 Documentation 프로토콜을 비활성화해야합니다. <protocols> Element을 참조하십시오.

이 항목은 레거시 기술에 고유 : 또한

는, 그 기사의 첫 번째 단락을 확인합니다. 이제 XML 웹 서비스와 XML 웹 서비스 클라이언트는 Windows Communication Foundation (WCF)을 사용하여 만들어야합니다.

60

불행히도 당신이 찾고있는 것에 대한 마법의 총알 해결책은 없습니다. 여기에 당신이 할 수있는 작업은 다음과 같습니다

  • 는 비주얼 스튜디오 명령 프롬프트 창에서이 명령을 사용하여 인터페이스 클래스를 만들 :

    wsdl.exe yourFile.wsdl /l:CS /serverInterface
    사용 VB 또는 CS를 선택의 언어.이렇게하면 새 .cs 또는 .vb 파일이 생성됩니다.

  • 새 .NET Web Service 프로젝트를 만듭니다. 기존 파일을 프로젝트로 가져 오기 - 위 단계에서 생성 한 파일. 코드 뷰에 .asmx.cs 파일에서

  • , 같은 클래스를 수정 :

 

public class MyWebService : System.Web.Services.WebService, IMyWsdlInterface 
{  
    [WebMethod] 
    public string GetSomeString() 
    { 
     //you'll have to write your own business logic 
     return "Hello SOAP World"; 
    } 
} 
+2

또한 생성 된 코드를 특정 위치에 넣으려면 "path \ to \ folder"를 넣거나 빼십시오. – b729sefc

+0

감사합니다. 거대한 도움 –

1

당신은 WSCF를 사용하여 WS 프록시 클래스를 생성 할 수 있습니다 (웹 서비스 계약으로) thinktecture.com의 도구. 따라서 기본적으로 wsdl에서 웹 서비스를 만들 수 있습니다. asmx를 만드는 것, 아마도 그렇지는 않을 것이다.하지만 그것은 쉽지 않은가요? 이 도구는 VS2005-8 (WSCF-blue라고하는 2010/WCF의 새 버전)에 훌륭하게 통합됩니다. 나는 그것을 사용했고, 항상 정말로 좋았다고 느꼈다.

+0

나는 이것에 대해서도 메모 할 예정 이었지만, 나 자신에게 많은 행운은 없었습니다 (특히 WSCF Blue). 어쩌면 초기 버전이나 다른 것을 사용했을 수도 있습니다. –

1

응답이 늦을 수 있습니다. 그러나 가난한 사람에게 도움이 될 수 있습니다 는 SVC로 WSDL로 변환하는 방법 :

  1. 당신이 위치 된 .wsdl 파일가있는 가정 : 더 접근의 용이성을 위해 "E \"를.
  2. 각 .wsdl 파일의 명령을 다음과 같이 준비하십시오. E : \ YourServiceFileName.wsdl
  3. 사용 권한 : 사용 권한을 수행 할 수있는 관리 권한이 있다고 가정하십시오. 열기 디렉터리 : C : \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin
  4. amd64 => 보안 => 편집 => 사용자 추가 => 모든 사용자 또는 현재 사용자 => 모든 권한 허용 => 승인.
  5. 텍스트 편집기에서 각 파일의 명령을 다음과 같이 준비하십시오. wsdl.exe E : \ YourServiceFileName.wsdl/l : CS/server.
  6. 이제 C : \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ Tools \ Shortcuts \ VS2013 x64 네이티브 도구 명령 프롬프트에서 Visual Studio 명령 프롬프트를 엽니 다.
  7. 위의 명령을 실행하십시오.
  8. 디렉터리로 이동하십시오. C : \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ amd64 .cs 파일을 생성해야합니다.

    9.Move가 적절한 위치에 CS 파일을 생성했습니다.

+0

이것은 vs cmd 창에서 가장 쉽고 똑바로 접근하는 방법입니다. –

관련 문제