作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我尝试连接到一台不可用的机器时,我得到一个 EndpointNotFoundException,但它花费的时间太长(大约 20 秒)。设置 closeTimeout、openTimeout、receiveTimeout 或 sendTimeout 无效。我能早点得到那个异常吗?
最佳答案
我们使用的是 EnterpriseLibrary ConnectionMonitor block ,它运行良好,您可以使用它定义自己的策略来确定连接可用性,但我们只使用包装盒中的那个。
该默认代码(确实在后台线程上运行...由 block 处理)在内部使用:
public bool IsAlive(string hostnameOrAddress)
{
bool alive = false;
try
{
Uri address = new Uri(hostnameOrAddress);
HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(address);
request.Timeout = 5000;
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
{
alive = DoesResponseStatusCodeIndicateOnlineStatus(response);
}
}
catch (WebException wex)
{
alive = DoesWebExceptionStatusIndicateOnlineStatus(wex);
}
return alive;
}
看看 block 本身,看看您是否可以在您的项目中使用它,或者获得一些关于如何解决您的特定问题的想法。 (从内存中该 block 是 SCSF 智能客户端软件工厂的一部分)
但我的理解是,您需要执行某种后台线程处理或自己等待超时。在调用超时之前,WCF 不知道端点不存在。
关于c# - 如何更早发现不良端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2055943/
我安装了 fakeLoader (jquery 预加载器)但我无法在页面加载前显示它。 在 mozilla 中它几乎可以正常工作(奇怪的是......),但在 Chrome 和 Opera 中,页面首
我试图通过以下代码在触摸事件上移动 ImageView: public class ScrollableImageView extends ImageView { private Gestur
我是一名优秀的程序员,十分优秀!