从另一个调用一个WCF服务......或者我?

时间:2009-12-16 07:38:59

标签: c# web-services webmethod

我正在尝试从现有服务中调用远程WCF服务。

我已经在远程服务中需要使用的方法添加了一个服务引用,并在我自己的服务的WebMethod中按如下方式使用它:

  [WebMethod(Description = "My local service."]
  public RemoteService.ServiceResponse ServiceRequest(RemoteService.SendRequest myObject)
  {
       // Instance of remote service's method I'm 
       RemoteService.ServiceResponse SendResponse;

       SendResponse = ServiceRequest(RemoteService.SendRequest)    

       return SendResponse;
  }

我的问题是,通过调用远程服务的ServiceRequest Web方法,我实际上是在调用远程服务吗?!或者,我只是调用我自己的本地远程服务的ServiceRequest方法实例?

如果我对自己的错误是正确的,那么做我需要做的事情的正确方法是什么,我认为这是一种行为或代理,可以传递来自我的服务的请求和响应以及远程服务?

1 个答案:

答案 0 :(得分:3)

首先,[WebMethod]属性将指向ASMX webservice - 而不是WCF。它真的是WCF ??

其次,如果 IS WCF:为了在服务上调用方法,您需要为该服务实例化代理客户端。当您生成服务引用时,您应该已经获得了ServiceNamespace.ServiceReferenceClient类别 - 它已经为您自动生成了。您需要实例化它并在该代理上调用该方法:

[WebMethod(Description = "My local service."]
public RemoteService.ServiceResponse ServiceRequest(RemoteService.SendRequest myObject)
{
       // Instance of remote service's method I'm 
       RemoteService.ServiceResponse SendResponse;

       ServiceProxyClient client = new ServiceProxyClient();    

       SendResponse = client.ServiceRequest(RemoteService.SendRequest)    

       return SendResponse;
  }

这样,您确实在调用刚添加为服务引用的服务。