System.Net.WebException“从WCF服务调用WCF服务时无法连接到远程服务器”

时间:2015-07-01 17:10:43

标签: c# .net wcf http iis

我正在撰写一项服务,允许我们的产品从一个客户到另一个客户彼此沟通。该服务基本上有一个Send方法和Receive方法,其中Send是从一个产品调用的,而Receive是从Send内部调用的,它在另一个产品上调用它。

我在问题标题中收到了所述异常。当我直接使用相同的代码调用它时,该服务工作正常,从WCF服务中调用时似乎只是失败。

以下是我Send方法中的代码。

[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json)]
public void Send()
{
    var binding     = new WebHttpBinding();
    var endpoint    = new EndpointAddress("http://localhost/instance2/service.svc");
    var factory     = new ChannelFactory<IService>(binding, endpoint);
    var dtoFactory  = new DTOFactory();
    var outgoingDTO = dtoFactory.Create(obj1, obj2, obj3);

    factory.Endpoint.Behaviors.Add(new WebScriptEnablingBehavior());

    binding.SendTimeout  = new TimeSpan(0, 30, 0);
    binding.CloseTimeout = new TimeSpan(0, 30, 0);

    var service = factory.CreateChannel();

    using (var scope = new OperationContextScope((IContextChannel)service))
    {
        service.Receive(outgoingDTO);
    }
}

该服务在两端都托管在IIS中,因此我知道在调用Receive时,它将在应用程序池帐户下调用,而不是具有会话的Windows帐户。我试图在我的管理员帐户下运行我的应用程序池,只是为了排除这一点,但同样的错误仍然存​​在。

这一切都在同一台机器上,只是我们产品的两个独立实例。当在WCF服务中调用另一个WCF服务时,我们需要做什么特别的事情,当它们都在IIS中托管时?

两种服务都使用完全相同的配置。 WebHttpBinding,相同的IService接口,以及相同的ServiceHostFactory。 (这只是调整MaxReceivedMessageSize以允许更大的请求)。

标题中的例外实际上是以下内部例外。

{"There was no endpoint listening at http://localhost/instance2/service.svc/Receive that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."}

内部异常:

{"No connection could be made because the target machine actively refused it 127.0.0.1:8888"}

我已经验证我可以直接调用该服务(而不是来自其他WCF服务)并且它可以正常工作。

0 个答案:

没有答案