2010-08-13 3 views
2

나는 ASMX 서비스를 가지고있다. 나는 그것으로부터 응답을 받고 싶다. 내 코드는 다음과 같습니다.어떻게 ASMX 서비스에서 반환 값을 얻습니까?

public class UserService : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public string GetPassword() 
    { 
     return "123"; 
    } 
} 
+1

귀하의 코드가 잘 보인다 클라이언트 측에서이 코드를 사용해보십시오. 뭐가 문제 야? –

답변

3

"이 웹 서비스에 어떻게 연결합니까?" 당신은 꽤 많이 콘솔 응용 프로그램, 윈도우 폼, 또는 수, 비주얼 스튜디오 프로젝트를 (내가 여기 VS2k8 있으리라 믿고있어) 만들어야 다른

  1. 오른쪽 솔루션 탐색기에서 "참조"를 클릭 선택 "서비스 참조 추가 ..."
  2. 을 주소 상자에에서 서비스를 찾았 주소를 입력
  3. 클릭
  4. 선택
  5. 는 "서비스"상자에서 관련 서비스를 선택 "GO" "Namespace"상자의 네임 스페이스
  6. 히트 OK

Visual Studio에서 서비스 프록시를 생성합니다. 당신은, 예를 들어, "MyNamespace에"로 네임 스페이스를 선택한 경우, 다음 Visual Studio에서 당신은 당신의 코드에 추가 할 수 있습니다 : 당신이 당신의 Silverlight 응용 프로그램에 ASMX 서비스를 연결할하려는 희망

using (var client = new MyNamespace.UserService()) 
{ 
    var result = client.GetPassword(); 
} 
+0

하지만 실버 라이트를 사용합니다 : ... client.GetPasswordAsync() ... 그리고 그 함수는 값을 반환하지 않습니다. –

+1

글쎄, 그건 비동기 버전의 메소드를 호출하기 때문입니다. 'client.GetPasswordCompleted' 메소드에 이벤트 핸들러를 추가 할 필요가 있습니다. 비동기 메소드는 (1) 결과를 직접 반환하지 않고 (2) 사용자의 실행을 차단하지 않기 때문에 결과가'e.Result'에 저장되어야합니다. 코드가 완성 될 때까지 – Rob

+0

아니요. e를 찾지 못했습니다. 결과 propetry :(스크린 샷을 찍습니다. http://img205.imageshack.us/img205/4241/screenss.png My IDE 이미지 –

1

합니다. 이 경우 blog을 살펴볼 수 있습니다.

블로그에서 WCF 서비스를 사용해 왔지만 서비스를 Silverlight 응용 프로그램에 연결하는 것은 모두 동일합니다.

블로그의 단계에 따라 ASMX 서비스를 ServiceReference로 추가하십시오.

private void Connect2Service() 
{ 
    ServiceReference.UserServiceClient client = new ServiceReference.UserServiceClient(); 
    client.GetPasswordCompleted += 
      new EventHandler<GetPasswordCompletedEventArgs>(client_GetPasswordCompleted); 
    client.GetPasswordAsync(); 
} 

private void client_GetPasswordCompleted(object sender, GetPasswordCompletedEventArgs e) 
{ 
    // Textblock will show the output. In your case "123" 
    textblock.Text = e.Result; 
} 
+0

Very Thanks. 그것은 일하고 있습니다 ... –

+0

답변으로 표시하여 다른 사람들에게도 도움이되도록하십시오. –

+0

UI 변경 사항을 적용하기 위해 UI 스레드에서 올바르게 작동합니다. 하지만 PCL을 사용하고 싶다면 어떻게해야합니까 ?? e.Result에서 값을 가져 와서 Connect2Service로 다시 보내는 방법 ?? – Rohit

관련 문제