2012-01-15 3 views
2

우선은 내가 WSDL을 가지고있다, 그래서WSDL 웹 참조 클라이언트와 비누 문자열 모두의

좋아 나와 함께 기다려주십시오 WCF/WSDL 영역에 전체 멍청한 놈을 반환하는 방법을 변경, XSD 복잡한 메시지 유형, C# 콘솔 응용 프로그램에서 테스트 클라이언트를 생성했습니다. reference.cs에서 생성 된 WSDL 코드에 대한 웹 참조를 추가했습니다.

reference.cs에서 사용할 수있는 메서드를 호출 했으므로 잘 동작합니다. 비누 요청/응답을 기록하기 위해 reference.cs의 메소드에 비누 추적 확장을 추가했습니다.

클라이언트에서 WSDL 복합 유형 클래스 객체를 얻습니다. 여기서 모든 것은 동기화 및 비동기 호출 모두에 대해 정상적으로 반환됩니다.

이제 내가 원하는/시도하고, deserialized 클래스 개체가 아니라 비누 문자열을 반환하는 메서드를 원할 때 그들은 스트림 및 deserialization 전에 받았습니다.

비누 문자열을 반환하는 방법을 어떻게 변경합니까? 그것들에 접근하는 것이 아니라 (나는 계속하기 위해) 메소드로부터 직접 리턴하는 것입니다.

올바른 방향으로 나를 가리켜 주십시오. 피하려고 노력하는 soapclient를 구현해야합니다.

감사합니다. 나는 물건을 분명히해야하는지 알려주세요.

업데이트 :

좋아하는 선생님이 내가 무슨 짓을 :

다음,는 svcutil을 사용하여 WSDL에서 클래스를 생성 : 나는 XML 응답을 얻었다

ServiceClient1 sc1 = new ServiceClient1(); 
TestResponseClass trc1 = sc1.method1("Testinput"); 
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(TestResponseClass),"http://xxx.xxx.xxx.local/Service1.wsdl"); 
StringWriter stringWriter = new StringWriter(); 
x.Serialize(stringWriter, trc1); 
Console.Write(stringWriter.ToString()); 

이런 식으로. 내가 원했던 것에 더 가깝게, 나는 그것을 비누 대응으로 바꾸려고 노력할 것이다. 나는 지금 당장 바른 길을 가기를 바랍니다. 그렇지 않을 경우 수정하십시오. 빨리 배우고 배우는 것 ... 나는 추측한다

+0

왜 "SOAP 응답"을 원하십니까? –

+0

답장을 보내 주셔서 감사합니다. 나를 옳은 길로 인도합니다. 즉, 설명하기가 조금 복잡하지만 요컨대 클라이언트와 연결된 다른 클라이언트가있을 것이고 그들은 비누 봉투를 원하지만 다시 생각할 것입니다. 위의 XML에 더 잘 맞습니다. 위의 직렬화 방법을 확인하십시오. XML 백은 정확하고 효율적입니다 (정확한 XML을 제공하지만). 존 감사합니다. – SSA

+1

다른 클라이언트가 귀하의 컴퓨터에 어떻게 연결되어 있습니까? 네트워크를 통해 문제가 없다면. 여러분은 XML을 가지고 놀 필요가 없습니다. –

답변

1

조금 혼란 스러울지도 모른다. 웹 참조를 사용하지 마십시오. 이것은 WCF 및 "서비스 참조 추가"로 대체 된 기존 ASMX 기술입니다.

새로운 개발에는 ASMX를 사용하지 마십시오.


나는 당신의 업데이트를 보았고, 당신은 혼란 스럽습니다.

코드는 가지고 그것을이다

ServiceClient1 sc1 = new ServiceClient1(); 
TestResponseClass trc1 = sc1.method1("Testinput"); 

합니다. 너 끝났어. 이미 서비스에 SOAP 메시지를 보내고 이미 응답을 받았습니다. XML으로 작업 할 필요가 전혀 없습니다.

+0

고마워요, 당신의 대답은 매우 감사합니다, 알았어요. 똑같은, 문자열 또는 스트림 (나는 SoapExtension에 노출 된 것만 큼) 에서처럼 비누를 반환하도록 메서드 코드를 변경하고 싶습니다. WSDL에서 사용 된 스키마를 기반으로 비누에 다시 응답 클래스 객체를 다시 역 직렬화하는 것이 좋든 좋은 방법일까요? WCF가 이미 스트림에서 직렬화하고 WCF가 직렬화하지 않는 것이 좋기 때문에 이상하게 들립니다. – SSA

+1

죄송 합니다만,이 부분이별로 의미가 없으므로 자세한 내용을 제공해야합니다. WCF와 SoapExtension을 함께 사용하지 마십시오. "SOAP 문자열 반환"이란 무엇을 의미합니까? 일반적으로 SOAP 문자열을 반환 할 필요가 없거나 반환하려고합니다. –

+0

다시 한번 John은 내가 원하는 soapdocument 속성 메소드를 사용하여 비누 xml 문자열 또는 스트림을 반환하고 현재로서는 복잡한 유형의 클래스 객체 (WSDL에서 생성됨)를 반환합니다 (이것은 매우 중요합니다). – SSA