我正在尝试从现有服务中调用远程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方法实例?
如果我对自己的错误是正确的,那么做我需要做的事情的正确方法是什么,我认为这是一种行为或代理,可以传递来自我的服务的请求和响应以及远程服务?
答案 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;
}
这样,您确实在调用刚添加为服务引用的服务。