2012-12-27 1 views
0

WCF에서 기본 Add 2 numbers 서비스를 생성 중입니다. 내가 추가 한 내가이 서비스를 구축하고 콘솔 응용 프로그램WCF에서 작업 계약 메소드를 참조 할 수 없습니다.

Program.cs 

그것을 내부 service reference to it를 추가 지금

public class Service: IService, ICalc { 
    public int Add(int a, int b){ 
     return a+b; 
    } 
} 

을 추가 한 Service.cs 안에 지금 IService.cs

[ServiceContract] 
public interface ICalc{ 
    [OperationContract] 
    int Add(int a, int b); 
} 

안에 다음

ICalService.Service c = new ICalService.Service(); 
int result = c.Add(10,20);  //Now on this line I cannot seem to get the Add(int a, int b) method 
내가 전에 선언 한

ICalService 

은 참조 할 때 서비스에 제공 한 이름입니다.

Add(int a, int b) 방법이 표시되지 않는 이유는 무엇입니까?

답변

1

IService 인터페이스 또는 ICalc 인터페이스 용 프록시를 만들었습니까? 당신이 IService 인터페이스를위한 프록시를 생성 한 것처럼 보입니다.

콘솔 응용 프로그램에서 웹 참조를 추가하는 동안 ICalcService 인터페이스에 프록시 (참조 추가)를 작성하고 있는지 확인하십시오.

0

어쩌면 단지 오타이거나 질문에서 누락 된 것일 수 있습니다. 그러나 인터페이스 IService가 실제로 정의 된 것을 볼 수 없으며 클래스 '서비스'에서만 구현됩니다. 또한 참조하려는 .svc 페이지를 탐색하는 것이 도움이되는 경우가 종종 있습니다. 브라우저는 동작을 실행하여 얻는 것보다 더 좋은 오류 메시지를 표시하는 경우가 있습니다.

EDIT : .svc 페이지를 탐색하고 WSDL을 생성 할 수 있는지 확인합니다. 서비스 작업을보고 생성 된 wsdl을 얻을 수 있다면 서비스가 정상적으로 작동하고 있다고 생각하는 것보다. 나는 다른 제안을 취하여 적절한 프록시 객체를 생성하는지 확인한다.

+0

IService는 WCF 서비스를 만들 때 생성 된 미리 정의 된 인터페이스입니다. 간단히 ICalc를 추가했습니다. 나는 여러 번 재 구축을 시도했지만, Add (int a, int b)가 참조 될 때라도, 그것은 agrument 과부하 불일치를 말한다. 어쩌면 WCF와의 첫 경기 이기에 분명히 한 발자국을 놓치고 있다고 생각합니다. – user544079

관련 문제