gpt4 book ai didi

c# - 构造调用 Web 服务的代码的最佳方式

转载 作者:太空狗 更新时间:2023-10-30 01:24:31 27 4
gpt4 key购买 nike

我正在通过 httpwebrequest 调用网络服务,并获得响应。 Web 服务旨在 24/7 全天候运行。

构建此代码并检查服务是否“可用”的最佳方式是什么?

我有什么:

if (NetworkIsAvailable())
{
// Call web service
// Handle exceptions within here.
}


else
{
// to throw a relevant exception that there is no network
}

抛出异常还是返回 false 是明智的? svc 永远不应该关闭

最佳答案

根据您收到的数据类型、检查频率等,我会使用通用解决方案,在失败时多次尝试连接,然后在失败时对“异常”进行分类(永远不会有两个异常我的经验也是如此)。

例如:

var failCount = 0;
var succeeded = false;

while ((failCount < 3) && (!succceeded)) {
try {
//call service....
succeeded = true;
} catch(WebException wex) {
//handle wex, for instance look for timeout and retry
} catch(...) {
//Handle other exceptions differently...
LogError("BOOOM: " + excep);
throw;
} catch(Exception ex) {
//handle a general exception
failCount++;
}
}

if (failCount >= 4) {
//Unspecified error multiple times, react appropriately...
}

显然,如果调用成本高,您不想多次尝试,这里我假设它是一种不太昂贵的“心跳”检查。 “failCount”可以根据您期望连接的“动荡”程度进行调整。

关于c# - 构造调用 Web 服务的代码的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9068101/

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