1

我在将 wcf 客户端应用程序连接到在单独机器上运行的主机时遇到的问题记录在先前提出的问题中:

WCF:为什么传入远程端点会失败?

但是,此处提供的解决方案说您需要使用带有空字符串的 SpnEndpointIdentity。由于我的代码与我引用的示例中的情况不同,我需要知道如何处理我创建的 SpnEndpointIdentity 对象。

我有一个 ChannelFactory,我在其上调用 Create channel,传入一个 EndpointAddress:

    public override void InitialiseChannel()
    {
        SpnEndpointIdentity spnEndpointIdentity = new SpnEndpointIdentity("");
        var address = new EndpointAddress(EndpointName);

        Proxy = ChannelFactory.CreateChannel(address);
    }

(注意:ChannelFactory 是 IChannelFactory 类型,其中 T 是服务合同接口) 那么我该如何处理 spnEndpointIdentity?我无法将它传递给 CreateChannel。

或者我可以在创建通道工厂时以某种方式使用它:

    private ChannelFactory<T> CreateChannelFactory()
    {
        var binding = new NetTcpBinding
        {
            ReaderQuotas = { MaxArrayLength = 2147483647 },
            MaxReceivedMessageSize = 2147483647
        };

        SpnEndpointIdentity spnEndpointIdentity = new SpnEndpointIdentity(""); 
        var channelFactory = new ChannelFactory<T>(binding);

        return channelFactory;
    }

同样,我不能将它传递给构造函数,那我该怎么办呢?

谢谢。

4

1 回答 1

2

你几乎明白了。

您缺少的是您将 EndpointIdentity 与 EndpointAddress 相关联,然后将其提供给 CreateChannel():

SpnEndpointIdentity spnEndpointIdentity = new SpnEndpointIdentity("");
var address = new EndpointAddress(EndpointName, spnEndpointIdentity);
于 2009-12-16T14:00:32.457 回答