【问题标题】:WCF Service Method Overloading issue - Help neededWCF 服务方法重载问题 - 需要帮助
【发布时间】:2012-06-19 00:30:54
【问题描述】:

我有一个 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 服务方法?问题解决了吗?

欢迎任何 cmets。

谢谢,

.NET 框架 3.5 Visual Studio 2008 标准版 C#

【问题讨论】:

  • 您的服务合同似乎没有任何问题,但如果没有实际错误,则很难判断。是什么产生了错误——添​​加服务引用、浏览到 WSDL 或调用方法?
  • 您提到错误消息指向 .svc 文件,第 1 列,第 1 行;但是您没有在问题中包含 .svc 文件的内容。除此之外,您显示的代码看起来是正确的。

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


【解决方案1】:

您是否手动构建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。请确保您自己有正确的代理与服务人员交谈。

【讨论】:

    猜你喜欢
    • 2018-07-31
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2012-03-08
    • 2013-02-24
    • 1970-01-01
    • 2017-10-25
    相关资源
    最近更新 更多