- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个自托管的WCF服务,还有几个客户端进程...一切正常,客户端启动,进行多个服务调用,然后退出。但是,在服务器上,每次客户端应用程序关闭时,我的错误日志(我从System.ServiceModel
转发错误级别跟踪消息的位置)都会有一个条目(这与服务方法调用不符)。
我在.NET 4.5上使用自定义tcp绑定(bind)...
<bindings>
<customBinding>
<binding name="tcp">
<security authenticationMode="SecureConversation" />
<binaryMessageEncoding compressionFormat="GZip" />
<tcpTransport />
</binding>
</customBinding>
ClientBase
,我确实在客户端上调用
Close()
而不出现问题。
ClientBase
的多个实例已创建,并且在操作期间已关闭且没有错误。
ServiceHelper
类。
using (var helper = new ServiceHelper<ARAutomatchServiceClient, ServiceContracts.IARAutomatchService>())
{
return await helper.Proxy.GetBatchesAsync(startDate, DateTime.Today.AddDays(5));
}
System.ServiceModel Error: 131075 :
System.ServiceModel.CommunicationException: The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue.
System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host NativeErrorCode: 2746
最佳答案
我在ServiceModel跟踪日志中看到的所有不需要的错误消息的来源都来自服务器上超时的连接池中的连接,或者来自客户端进程退出时客户端断开连接。
如果服务器上的共享连接超时,则在超时时立即在服务器上写入一些跟踪消息,然后在开始下一个操作时在客户端上写入一些跟踪消息。这些是“错误”级别的跟踪消息。
如果客户端进程在关闭连接之前退出,则在客户端进程退出时,您会立即在服务器上收到不同的错误级别跟踪消息。
这些是错误级别跟踪消息的事实尤其令人讨厌,因为即使在生产环境中,我也通常会记录这些消息……但是看来这些消息通常应该忽略不计,因为这是常规连接池连接超时的结果。
Microsoft已在此处解决了池连接关闭问题的一种描述。
http://support.microsoft.com/kb/2607014
上面的文章建议ServiceModel处理异常,当您在TraceLogs中看到它时,可以放心地忽略它。该特定情况被记录为“信息”级别的事件,与我实际记录的“错误”级别的事件一样,它也不会给我带来太大的麻烦。我试图从日志中“过滤”这些消息,但这非常困难。
自然,您可以通过在池中的连接(在服务器上)超时之前显式关闭池中的连接(在客户端上)来完全避免这种情况。为了让客户端关闭连接池中的连接(对于使用tcp传输的WCF绑定(bind)),我知道起作用的唯一事情是显式关闭ChannelFactory实例。实际上,如果您不缓存这些实例(并且不使用通常为您缓存它们的ClientBase),那么您将没有任何问题!如果您确实想缓存ChannelFactory实例,则至少应在应用程序退出之前显式关闭它们,这并不是我见过任何建议。在客户端应用程序退出之前关闭它们将处理丢弃的套接字的主要来源之一,这些套接字将作为服务器上的ServiceModel“Error”跟踪记录下来。
这是关闭 channel 工厂的一些代码:
try
{
if (channelFactory != null)
{
if (channelFactory.State != CommunicationState.Faulted)
{
channelFactory.Close();
}
else
{
channelFactory.Abort();
}
}
}
catch (CommunicationException)
{
channelFactory.Abort();
}
catch (TimeoutException)
{
channelFactory.Abort();
}
catch (Exception)
{
channelFactory.Abort();
throw;
}
finally
{
channelFactory= null;
}
<customBinding>
<binding name="tcp">
<security authenticationMode="SecureConversation"/>
<binaryMessageEncoding compressionFormat="GZip"/>
<tcpTransport>
<connectionPoolSettings idleTimeout="2.00:00:00"
maxOutboundConnectionsPerEndpoint="100" />
</tcpTransport>
</binding>
</customBinding>
关于c# - 关闭客户端应用程序: existing connection was forcibly closed by the remote host时在服务器上记录ServiceModel错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19817655/
使用 caret::train() 运行逻辑回归模型时出现问题。LR = caret::train(Satisfaction ~., data= log_train, method = "glm",
我正在尝试将nginx容器作为我所有网站和Web服务的主要入口点。我设法将portainer作为容器运行,并且可以从互联网上访问它。现在,我正在尝试访问由另一个Nginx容器托管的静态网站,但这样做失
我有一个在 Windows XP SP3 x86 上运行的 Visual Studio 2008 C# .NET 3.5 应用程序。在我的应用程序中,我有一个事件处理程序 OnSendTask 可以同
我在 Eclipse 中创建了作为独立程序执行的此类,它可以毫无问题地连接所有 http URL(例如:http://stackoverflow.com),但是当我尝试连接到 https(例如 htt
我在我的 nginx 错误日志中收到大量以下错误: connect() failed (111: Connection refused) while connecting to upstream 我的
我正在尝试将新的 log4j2 与 Socket Appender 一起使用,但我有点不走运。这是我的 XML 配置文件:
我目前正在尝试寻找 Android 应用程序后端的替代方案。目前,我使用 php servlet 来查询 Mysql 数据库。数据库(Mysql)托管在我大学的计算机上,因此我无法更改任何配置,因为我
类MapperExtension有一些方法,before_insert, before_update, ...都有一个参数connection. def before_insert(self, map
嗨,我正在尝试更改位于连接库 (v 5.5) 中的文档的文档所有者,我仍在等待 IBM 的回复,但对我来说可能需要太长时间,这就是我尝试的原因逆向工程。 我尝试使用标准编辑器 POST 请求将编辑器更
我在 nginx( http://52.xx.xx.xx/ )上访问我的 IP 时遇到 502 网关错误,日志只是这样说: 2015/09/18 13:03:37 [error] 32636#0: *
我要实现 Connected-Component Labeling但我不确定我应该以 4-connected 还是 8-connected 的方式来做。我已经阅读了大约 3 种 Material ,但
我在Resources ->JMS ->Connection Factories下有两个连接工厂。 1) 连接工厂 2)集成连接工厂 我想修改两个连接工厂下连接池的最大连接数。资源 ->JMS ->连
我在将 mongoengine 合并到我的 django 应用程序时遇到问题。以下是我收到的错误: Traceback (most recent call last): File "/home/d
上下文 我正在关注 tutorial on writing a TCP server last week in Real World Haskell .一切顺利,我的最终版本可以正常工作,并且能够在
我在访问我的域时遇到了这个问题:我看到了我的默认 http500 错误 django 模板正在显示。 我有 gunicorn 设置: command = '/usr/local/bin/gunicor
我更换了电脑,并重新安装了所有版本:tomcat 8 和 6、netbeans 8、jdk 1.7、hibernate 4.3.4,但是当我运行 Web 应用程序时,出现此错误。过去使用我的旧电脑时,
您好,我是这个项目的新手,我在 CentOS7 ec2 实例上托管它时遇到问题。当我访问我的域时出现此错误: 2017/02/17 05:53:35 [error] 27#27: *20 connec
在开始之前,我已经查看了所有我能找到的类似问题,但没有找到解决我的问题的方法。 我正在运行 2 个 docker 容器,1 个用于 nginx,1 个用于 nodejs api。我正在使用 nginx
使用 debian 包将 kaa -iot 平台配置为单节点时。我收到以下错误。 himanshu@himpc:~/kaa/deb$ sudo dpkg -i kaa-node-0.10.0.deb
我是我公司开发团队的成员,担任管理员角色。我可以通过 https://developer.apple.com/ 访问团队的成员(member)中心 但是,当我尝试在 https://itunescon
我是一名优秀的程序员,十分优秀!