gpt4 book ai didi

服务器上的 WCF 时间更改导致断开连接

转载 作者:行者123 更新时间:2023-12-05 07:47:44 24 4
gpt4 key购买 nike

在我的服务器(承载 WCF 应用程序)上更改时间时,我注意到所有客户端都将断开连接。我明白为什么会发生这种情况,它们会因为超时而断开连接,因为如果我们将时间设置为一小时后,设置为 15 秒超时的可靠 session 将过期很久。有趣的是,如果您将其后退任何时间,它都不会失去连接,但将其前移超过 15 秒就会导致问题。

问题是,我们能否在服务器时间更改时阻止客户端断开连接,因为我发现这种行为很奇怪,让所有客户端断开连接是一个真正的问题。

我们需要调整服务器时间,因为它会不同步,这不是我们可以经常做的事情,因为我们需要去实际位置(即客户的位置)。服务器位于高度安全的区域,出于安全原因,它们无法访问(或任何)外部服务器,我们需要从外部无法访问整个网络。安装我们自己的时间服务器通常会遇到同样的问题,它会不同步,并且保持在可接受范围内的解决方案通常过于昂贵。

最佳答案

您可以将绑定(bind)设置为不在 SOAP 中包含时间戳。为此使用 CustomBinding。

这是一个项目的示例代码,我很好奇它是否有效!请注意,此代码还设置了 SOAP 版本 1.1,您可以更改/删除它。

private Binding CreateBindingSoap11_NoTimeStamp()
{
BasicHttpBinding httpBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);

BindingElementCollection elements = httpBinding.CreateBindingElements();
elements.Find<SecurityBindingElement>().IncludeTimestamp = false;
elements.Find<TextMessageEncodingBindingElement>().MessageVersion = MessageVersion.Soap11;

CustomBinding newBinding = new CustomBinding(elements);

return newBinding;
}

当然它也适用于 NetTcpBinding

关于服务器上的 WCF 时间更改导致断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39329879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com