WCF服务方法重载问题 - 需要帮助

时间:2012-06-15 22:50:57

标签: c# wcf .net-3.5 .net-framework-version

我有一个WCF Web服务方法(通过 3.5 NET Framework ),需要重构以使用可选的输入参数。 Mi调查总结了可选参数,因为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时,我遇到了一个issu,指示第1行第1行的svc文件出错(请注意我没有包含确切的错误消息,因为我将WS回滚到之前的版本以避免在周末发生刺激问题。

我的问题是:有人认为我错过了开发方面的东西吗?或者,当“安装”时,我是否能够正确地重载我的WCF服务方法?问题解决了吗?

欢迎任何评论。

谢谢,

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

1 个答案:

答案 0 :(得分: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。请确保您拥有与服务对话的正确代理。