C# WCF服务方法重载问题-需要帮助
我有一个WCF web服务方法(通过3.5NetFramework),需要对其进行重构以使用可选的输入参数。Mi调查得出结论,可选参数是4.0中引入的一个概念,因此我需要做一些变通来解决我的问题。我的代码更新如下所示:C# WCF服务方法重载问题-需要帮助,c#,wcf,.net-3.5,.net-framework-version,C#,Wcf,.net 3.5,.net Framework Version,我有一个WCF web服务方法(通过3.5NetFramework),需要对其进行重构以使用可选的输入参数。Mi调查得出结论,可选参数是4.0中引入的一个概念,因此我需要做一些变通来解决我的问题。我的代码更新如下所示: partial class Class1: IService { public int MethodName ( int param1, string param2 ) { // code here } public int
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);
}
}
[服务合同]
公共接口设备
{
[运营合同(Name=“Alias1”)]
int-methodName(int-param1,string-param2);
[运营合同(Name=“Alias2”)]
int方法名(int参数1);
}
公共部分类ServiceClient:ClientBase,iSeries设备
{
公共int-methodName(int-param1,string-param2)
{
返回Channel.MethodName(param1,param2);
}
公共整数名称(整数参数1)
{
返回Channel.MethodName(param1);
}
}
经过解释,我能够正确地构建Web服务。除此之外,集成测试也运行得很好。在那之后,我需要在服务器上安装,并且在尝试测试WSDL时,我遇到了一个问题,表明svc文件第1列第1行有错误(请注意,我没有包括确切的错误消息,因为我将WS回滚到了以前的版本,以避免周末出现产品问题)
我的问题是:有人认为我在发展中遗漏了什么吗?或者,当“安装”问题得到解决时,我是否能够正确地重载我的WCF服务方法
欢迎提出任何意见
谢谢
.NET Framework 3.5
VisualStudio2008标准版
C#是否手动构建
ServiceClient
类?我建议您使用svcuti.exe工具生成代理,不要鼓励自己直接在生成的代理代码中进行修改
如果您通过工具或VS add service引用生成了代理,您应该会看到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);
}
}
[服务合同]
公共接口设备
{
int-Alias1(int-param1,string-param2);
int-Alias2(int-param1);
}
公共部分类ServiceClient:ClientBase,iSeries设备
{
//其他东西
公共整数别名1(整数参数1,字符串参数2)
{
返回base.Channel.Alias1(param1,param2);
}
公共整数别名2(整数参数1)
{
返回base.Channel.Alias2(param1);
}
}
请注意,您的客户机的方法有
Alias1
和Alias2
而不是MethodName
。请确保您有合适的代理人与服务部门交谈。您的服务合同似乎没有任何问题,但如果没有实际错误,则很难判断。产生错误的原因是什么——添加服务引用、浏览WSDL或调用方法?您提到错误消息指向.svc文件col 1第1行;但是您的问题中没有包含.svc文件的内容。除此之外,您显示的代码看起来是正确的。