2011-06-23 131 views
2

我正在使用WCF SOAP服务,并且发现了一些奇怪的东西。WCF SOAP服务

我有下面的代码在我的服务合同

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    int MethodA(int a, int b); 

    [OperationContract] 
    string MethodB(int a, int b); 
} 

,我不打算给所实现的服务类,因为实现的治法和方法b是微乎其微的,可以做任何事情。

当我选择“添加Web引用”并在我用来使用服务的ASP.NET应用程序中创建代理引用时,我注意到这两种方法在其签名上有不同的参数。

例如:

治法具有以下签名选项

MethodA(int a,bool aSpecified,int b,bool bSpecified) 

和方法b只具有以下特征

MethodB(int a,bool aSpecified,int b,bool bSpecified,out int MethodBResult,bool methodBResultSpecified) 

为什么他们有签名不同的选择?

我需要MethodB签名与MethodA相同。

我需要为最后两个参数提供什么?

回答

3

如果您正在使用WCF服务,则应该使用“添加服务引用”(而不是“添加Web引用”)来为服务创建代理。这些*指定的参数将添加为“旧式“代理,因为你可以防止参数被发送到服务(有关更多信息,请参阅What are these extra parameters in my ASMX Proxy Methods?后的一些答案)