[英]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添加服務引用生成了代理,則應該會看到IService
和ServiceClient
看起來像這樣,
[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);
}
}
請注意,您的客戶端有方法為Alias1
和Alias2
沒有MethodName
。 請確保您自己有正確的代理與服務進行對話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.