我在server1上使用web服务如果server1出现故障我怎么能更改为server2(使用C#)

时间:2009-04-24 21:21:15

标签: c# web-services

如果server1失败,我希望能够使用server2,所以我有两个Web引用,但这会导致“不明确的引用”错误,因为它在两个服务器上都是相同的服务。

这是C#代码:

使用App.org.weccrc.www; //主服务器 使用App.org.weccrc.www2; //备份服务器

有没有办法在“using”语句“?

之前检查服务器上的服务是否可用

这可以是条件陈述吗?

或者还有另一种方法可以解决这个问题。

提前致谢

劳尔

2 个答案:

答案 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属性设置为回退位置。

如何检测主服务是否失败当然取决于您正在使用的服务。