使用WCF在消息中指定TTL
本文关键字:TTL 消息 WCF 使用 | 更新日期: 2023-09-27 18:12:39
我将使用一些方法创建一个WCF服务:其中一个方法将具有字节类型的TTL(生存时间)参数,以便设置转发到其他节点的最大半径。由于IP数据包有TTL字段,是否可以使用WCF设置此字段以达到相同的目标?
非常感谢!
对于通常的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