.net远程每100秒停止一次

时间:2008-11-17 15:00:59

标签: c# .net remoting

我们有一个非常奇怪的问题,我们的一个应用程序是使用.net远程查询不断查询服务器,并且每100秒应用程序停止查询一小段时间然后恢复操作。问题出在客户端而不是服务器上,因为应用程序实际上同时查询多个服务器并停止同时从所有服务器接收数据。

3 个答案:

答案 0 :(得分:3)

100秒是一个赠品号码,因为它是.Net中webrequest的默认超时。

我在过去看到PSI(Microsoft Project中的Project Server接口)没有覆盖超时,因此默认值为100秒,并且会终止任何与它交谈的时间超过该时间。< / p>

您是否可以访问所有代码,并且您确定在适用的情况下设置了超时,以便在您不知情的情况下不会应用任何默认值吗?

答案 1 :(得分:0)

我之前从未见过这种行为,不幸的是,这是一个模糊的场景,我认为你很难找到这个问题上遇到问题的人。它可能特定于您的应用程序。

我认为您可以采取一些调查来帮助您缩小问题范围。

  1. 确定它是实际停止的客户端还是服务器。如果您在确定此问题时遇到问题,请尝试安装数据包过滤器并监控流量以查看谁发送了最后一个数据。您可能无法读取二进制数据,但至少您会了解谁落后。
  2. 一旦弄清楚是客户端还是服务器导致滞后,请尝试调试应用程序并获取挂起发生的断点。这应该为您提供足够的详细信息,以帮助追踪问题。或者至少在SO上问一个更明确的问题。

答案 2 :(得分:0)

应用程序如何编码以实现连续查询?它是连续循环吗?还是带有Thread.Sleep的循环?还是在计时器上?,

首先确定你的系统是否正在你的代码中执行这个“触发器”,如果它是,并且远程处理服务器没有响应......那么,首先是有用的......

如果您无法在可以调试它的开发环境中重现此问题,那么,如果可以的话,我建议您在此循环中添加代码,以便每次写入日志文件(或其他一些持久性机制) “应该”检查它用于决定是否查询远程服务器的任何条件,然后在问题再次发生时查看这些日志......

如果您可以在远程服务器中执行相同的操作,要记录服务器何时收到远程处理请求,这也有帮助...

...哦,是的,只是一个想法,(我不知道你是如何对此进行编码的......)但是如果你在客户端使用一个单独的线程来发出远程处理请求,那么通道就是在该单独的线程上注册和注销,确保您要解除请求冲突,因为您无法同时在同一台机器上注册两次相同的端口... (尽管如果这是问题,这可能会在您的客户端引发异常)