2012-06-15 23 views
0

我有一个WCF Web服务方法(超过3.5 NET框架)需要重构使用可选输入参数。 Mi调查得出可选参数,因为4.0版本正在推出一个概念,所以我需要采取一些解决方法来解决我的问题。我的代码更新如下:WCF服务方法重载问题 - 需要帮助

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#

+0

您的服务合同似乎没有任何问题,但没有实际的错误,这将很难说。什么是产生错误 - 添加服务引用,浏览到WSDL或调用方法? –

+0

您提到错误消息指向.svc文件,列1,行1;但是你没有在你的问题中包含.svc文件的内容。除此之外,你所显示的代码看起来是正确的。 – CodingWithSpike

回答

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。请确保你自己拥有正确的代理服务。