使用WCF在消息中指定TTL

本文关键字:TTL 消息 WCF 使用 | 更新日期: 2023-09-27 18:12:39

我将使用一些方法创建一个WCF服务:其中一个方法将具有字节类型的TTL(生存时间)参数,以便设置转发到其他节点的最大半径。由于IP数据包有TTL字段,是否可以使用WCF设置此字段以达到相同的目标?

非常感谢!

使用WCF在消息中指定TTL

对于通常的Socket通信,您可以这样做:

插座。Ttl地产

对于WCF,我不确定你能以同样的方式控制它,对于MSMQ绑定,绑定的TimeToLive属性为TimeSpan,但与在IP级别更改TTL不同,参见这里:WCF/MSMQ "接收时间已经过了"死信队列问题

我不确定您是否可以编写自己的WCF绑定,并能够像我上面提到的第一个链接那样将您的值推送到底层套接字…

很晚的回答,但我们最近遇到了同样的问题。考虑到TransportSettings被标记为过时,我们做了以下操作:

var udpDiscoveryEndpoint = new UdpDiscoveryEndpoint();
var customBinding = udpDiscoveryEndpoint.Binding as CustomBinding;
if (customBinding != null)
{
    TransportBindingElement transportBindingElement = customBinding.Elements.Find<TransportBindingElement>();
    if (transportBindingElement is UdpTransportBindingElement)
    {
       (transportBindingElement as UdpTransportBindingElement).TimeToLive = configuration.DiscoveryTtl;
    }
}

在。net 4.0中,WCF中的UdpDiscoveryEndpoint有一个timeolive属性,默认值为1:

new UdpDiscoveryEndpoint().TransportSettings.TimeToLive

在。net 4.5中,它已经被udptransportindingelement所取代。

new UdpTransportBindingElement().TimeToLive