簡體   English   中英

WCF服務方法重載問題-需要幫助

[英]WCF Service Method Overloading issue - Help needed

我有一個WCF Web服務方法(在3.5 NET Framework之上),需要對其進行重構以使用可選的輸入參數。 小米調查得出結論,因為在4.0上引入了一個可選參數,所以我需要采取一些解決方法來解決我的問題。 我的代碼更新如下所示:

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時,我遇到了一個問題,該問題指示svc文件第1列第1行的錯誤(請注意,我沒有包括確切的錯誤消息,因為我將WS回滾到以前的版本,以避免在周末出現prod問題)。

我的問題是:有人認為我在開發中缺少什么嗎? 還是在“安裝”時能夠正確重載WCF服務方法? 問題解決了嗎?

任何意見將受到歡迎。

謝謝,

.NET Framework 3.5 Visual Studio 2008標准版C#

您是否在手動構造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 請確保您自己有正確的代理與服務進行對話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM