2012-06-15 22 views
0

我有一個WCF Web服務方法(超過3.5 NET框架)需要重構使用可選輸入參數。 Mi調查得出可選參數,因爲4.0版本正在推出一個概念,所以我需要採取一些解決方法來解決我的問題。我的代碼更新如下:WCF服務方法重載問題 - 需要幫助

partial class Class1: IService { 

    public int MethodName (int param1, string param2) 
    { 
     // code here 
    } 

    public int MethodName (int param1) 
    { 
     // code here 
     string param2 = FillInInternally(); 
     return this.MethodName(param1, param2); 
    } 

我也更新了我的經營合同:

[ServiceContract] 
public interface IService 
{ 
    [OperationContract(Name = "Alias1")] 
    int MethoName(int param1, string param2); 

    [OperationContract(Name = "Alias2")] 
    int MethoName(int param1); 

} 

public partial class ServiceClient : ClientBase <IService>, IService 
{ 

    public int MethoName(int param1, string param2) 
    { 
     return Channel.MethodName(param1, param2); 
    } 

    public int MethoName(int param1) 
    { 
     return Channel.MethodName(param1); 
    } 
} 

有了這樣的解釋,我是能夠得到Web服務建立正確。除了集成測試還能完美運行。之後,我需要在服務器上進行安裝,並且在嘗試測試WSDL時,我遇到了issu,指出第1列第1行的svc文件存在錯誤(請注意,我沒有包含確切的錯誤消息,因爲爲了避免在週末出現問題,我將WS回滾到以前的版本)。

我的問題是:有人認爲我從發展中失去了一些東西嗎?或者,當「安裝」時,我能否正確地重載WCF服務方法?問題解決了?

任何意見將受到歡迎。

感謝,

.NET Framework 3.5的 的Visual Studio 2008標準版 C#

+0

您的服務合同似乎沒有任何問題,但沒有實際的錯誤,這將很難說。什麼是產生錯誤 - 添加服務引用,瀏覽到WSDL或調用方法? –

+0

您提到錯誤消息指向.svc文件,列1,行1;但是你沒有在你的問題中包含.svc文件的內容。除此之外,你所顯示的代碼看起來是正確的。 – CodingWithSpike

回答

0

你手動構建ServiceClient類?我建議您使用svcutil.exe工具來生成代理,並且不要鼓勵自己直接在生成的代理代碼中進行修改。

如果已經產生通過工具或VS添加服務引用代理,你應該看到IServiceServiceClient應該是這個樣子,

[ServiceContract] 
public interface IService 
{ 
    int Alias1(int param1, string param2); 

    int Alias2(int param1); 
} 

public partial class ServiceClient : ClientBase <IService>, IService 
{ 
    // other stuff 
    public int Alias1(int param1, string param2) 
    { 
     return base.Channel.Alias1(param1, param2); 
    } 

    public int Alias2(int param1) 
    { 
     return base.Channel.Alias2(param1); 
    } 
} 

請注意,您的客戶端有方法爲Alias1Alias2不是MethodName。請確保你自己擁有正確的代理服務。