2012-12-27 51 views
0

我正在WCF中創建基本的Add 2 numbers服務。我加入裏面IService.cs無法引用WCF中的操作合同方法

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

下列現在,Service.cs裏面我已經加入

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

現在我建立這個服務並添加service reference to it控制檯應用程序

Program.cs 

這裏面被稱爲

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接口的代理。

在控制檯應用程序中添加Web引用時,請確保您正在爲ICalcService接口創建代理(添加引用)。

0

也許這只是您的問題中的一個錯字或缺失,但我沒有看到IService實際定義的接口,它僅在您的類「服務」上實現。此外,瀏覽到您嘗試引用的.svc頁面有時會很有幫助,瀏覽器有時會顯示比嘗試執行該操作時收到的更好的錯誤消息。

編輯: 我會確保你能夠瀏覽.svc頁面並生成一個WSDL。如果您能夠查看服務操作並獲得生成的wsdl,則我認爲您的服務已正常運行。我會採取其他建議,並確保您正在創建適當的代理對象。

+0

IService是我在創建WCF服務時生成的預定義接口。我只是簡單地加了ICalc。我嘗試了多次重建它,但即使Add(int a,int b)被引用時,它也表示了agrument重載不匹配。我想我肯定錯過了一步,因爲這也是我第一次使用WCF – user544079

相關問題