WCF:为什么在远程端点中传递失败?

时间:2009-12-16 13:37:48

标签: wcf endpoints sspi

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

WCF: Why does passing in a remote endpoint fail?

但是,此处提供的解决方案表示您需要使用带有空字符串的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;
    }

同样,我无法将其传递给构造函数,所以我该怎么做呢?

感谢。

1 个答案:

答案 0 :(得分:2)

你已经明白了。

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

SpnEndpointIdentity spnEndpointIdentity = new SpnEndpointIdentity("");
var address = new EndpointAddress(EndpointName, spnEndpointIdentity);