0

我有一个 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 时,我遇到了一个问题,表明第 1 列第 1 行的 svc 文件有错误(请注意,我没有包含确切的错误消息,因为我将 WS 回滚到以前的版本以避免周末出现问题)。

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

欢迎任何意见。

谢谢,

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

4

1 回答 1

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);
    }
}

请注意,您的客户端具有 asAlias1Alias2not方法MethodName。请确保您自己有正确的代理与服务人员交谈。

于 2012-06-18T10:12:05.237 回答