我有一个使用wsHttpBinding的WCF客户端,我想启用http keep-alive.
我希望我可以通过更改客户端配置来启用它...我已经找到了很多关于如何打开basic-alives以进行basicHttp绑定的描述,但没有运气wsHttpBinding ......这可能吗?
非常感谢.
这是我的客户端绑定:
<wsHttpBinding>
<binding name="WSHttpBinding_IRepositoryService" closeTimeout="00:00:10"
openTimeout="00:00:10" receiveTimeout="00:05:00" sendTimeout="00:05:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="655360" messageEncoding="Mtom"
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="81920" maxArrayLength="163840"
maxBytesPerRead="409600" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="true" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="">
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
Run Code Online (Sandbox Code Playgroud) 首先,我尝试了 C# DNS 相关 SO 线程和其他互联网文章中的所有建议 - 弄乱ServicePointManager /ServicePoint 设置、通过 HTTP 标头设置自动请求连接关闭、更改连接租用时间 - 没有任何帮助。似乎所有这些设置都是为了修复长时间运行的进程(如 Web 服务)中的 DNS 问题。如果进程拥有自己的 DNS 缓存以最大程度地减少 DNS 查询或操作系统 DNS 缓存读取,这甚至是有意义的。但这不是我的情况。
我们的生产基础设施使用 HA(高可用性)DNS 在维护或功能问题期间交换服务器节点。它的构建方式是,在某些地方我们有多个 CNAME 记录,它们实际上指向同一个 HA A 记录,如下所示:
所有这些记录的 TTL 均为 60 秒。因此,当欧洲节点出现故障或维护时,A记录会切换到其他节点的IP地址。
然后我们有一个监控实用程序,每 5 分钟执行一次并使用 site1 和 site2。为了使其正常工作,两个名称必须指向同一个 DC,因为 DC 之间的数据同步不会那么快。由于两个 CNAME 实际上都链接到同一个具有短 TTL 的 A 记录,乍一看似乎不会出错。但事实证明它可以。
该实用程序是用适用于 .NET Framework 4.7.2 的 C# 编写的,并使用HttpClient 类向两个站点执行请求。是的,又是 他 …