如果server1失败,我希望能够使用server2,所以我有两个Web引用,但这会导致“不明确的引用”错误,因为它在两个服务器上都是相同的服务。
这是C#代码:
使用App.org.weccrc.www; //主服务器 使用App.org.weccrc.www2; //备份服务器
有没有办法在“using”语句“?
之前检查服务器上的服务是否可用这可以是条件陈述吗?
或者还有另一种方法可以解决这个问题。
提前致谢
劳尔
答案 0 :(得分:3)
我会做这样的事情
public R CallWebservice<T,R>(T service, IEnumerable<string> urls, Func<T,R> serviceCall)
where T : SoapHttpClientProtocol, IDisposable
{
foreach (var url in urls)
{
try {
service.Url = url;
return serviceCall(service);
} catch (Exception ex) {
// Log Error
continue;
} finally {
service.Dispose();
}
}
// throw exception here which means that all url's failed
}
你可以称之为做这样的事情
Employee[] employees = CallWebService(
new DownloadService(),
new string[] { "http://site1/service.asmx","http://site2/service.asmx" },
service => service.DownloadEmployees()
);
这将遍历指定的每个URL并调用webservice。如果它失败了,那么它只是尝试执行下一个URL,直到它成功执行。
答案 1 :(得分:1)
在您的网络参考上,将网址行为设置为动态。生成的Web引用代码现在将具有控制位置的配置设置。当您检测到主服务失败时,您可以将Url属性设置为回退位置。
如何检测主服务是否失败当然取决于您正在使用的服务。