문제

테스트 형태에 의해 생성된 ASMX 은 매우 편리한 테스트를 위해 작업입니다.그러나,거기에 명백하지 않은 방법을 포함해 비누 헤더가 있습니다.

할 수 있는 방법을 테스트하는 헤더없이 프로그램을 사용하려면 클라이언트의 서비스입니까?

도움이 되었습니까?

해결책

Interop에 관심이있는 경우 .NET 클라이언트 앱을 사용하여 .NET 웹 서비스를 테스트하지 마십시오. SOAPUI와 같은 적절한 도구를 사용하여 웹 서비스를 테스트하십시오. www.soapui.org

이 도구는 Java로 작성되었지만 모든 종류의 웹 서비스를 테스트하는 데 무료이며 편리합니다.

다른 팁

내가하려는 일을 이해한다면 ASMX가 제공 한 비누를 사용하여 HTTP 요청을 할 수 있습니다. Broswer에서 ASMX를 열면 웹 서비스에서 사용할 수있는 메소드 목록이 표시됩니다. 테스트하려는 메소드를 클릭하면 사용할 수있는 비누 요청이 표시됩니다. 테스트하려는 값을 작성하십시오. 아래는 비누를 테스트하는 데 사용할 수있는 코드입니다.

// Set SOAP Message
string msg = "<?xml version='1.0' encoding='UTF-8'?><soap:Envelope>";
...
...

// Make http request
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://linktoyour/service.asmx");

req.Headers.Add("SOAPAction", "http://linktoyour/NameOfFuntion");

req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg);

req.ContentLength = bytes.Length;

System.IO.Stream st = req.GetRequestStream();
st.Write(bytes,0,bytes.Length);
st.Close();

// Read response
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
System.IO.Stream st1 = res.GetResponseStream();

System.IO.StreamReader sr = new System.IO.StreamReader(st1, System.Text.Encoding.UTF8);

string txt = sr.ReadToEnd();

// Display response
Response.Write(txt);

당신은 물었다

서비스를 사용하도록 클라이언트를 프로그래밍하지 않고 헤더를 어떻게 테스트 할 수 있습니까?

답은 서비스를 사용하도록 클라이언트를 프로그래밍해야한다는 것입니다.

서비스를 소비하기 위해 코드를 작성하는 개발자는 이상한 헤더와 함께 잘못 디자인되고 사용하기 어려운 서비스를 사용하는 클라이언트를 작성해야합니다. {나쁜 디자인, 사용하기 어려운 이상한}에 대해 알아 보는 것이 좋습니다.

이렇게하면 서비스를 {잘 설계하고, 사용하지 않는 즐거움, 정상}으로 재 설계 할 수 있습니다.

BTW, 웹 서비스에 대한 단위 테스트를 작성하는 것이 좋은 방법입니다. 그렇게하면 작고 간단한 고객이 있습니다.

대신 직접 액세스하는 헤더를 추상화를 제공하는 코드에 액세스하는 대신 합니다.는 경우,예를 들어,당신은 헤더라"고객",을 제공할 수 있는지 컨텍스트 클래스에 액세스할 수 있습니다.

문자열 고객=MyContext.현재 있습니다.고객;

지금,당신이해야 할 모든 당신은 스왑에서 모의 구현에 당신의 테스트 수업을 필요로하지 않는 모든 배관합니다.

그러나 이러 테스트 ASMX 외부 웹 서버는지 정확히 이상적인 수 있기 때문에 그것은 놓칠 것 같은 직렬화.당신 테스트 서버에 배포하고 테스트는 배포본을,당신은 더 나을 것이다.는 경우에 당신은 당신이 정말로 걱정하는 테스트,WCF 은 더 나은 옵션을 수 있기 때문에 자기 host WCF 라에서 쉽게 테스트합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top