如何控制Web服务是否不可用?

时间:2013-12-03 09:37:33

标签: c# web-services

我有一个web服务,从客户端获取列表并将其插入数据库。客户端有一个Windows服务,每10秒发送一个列表。但有一个问题。如果无法访问webservice(服务器)该怎么办?我不应该丢失任何数据。如果服务器无法访问,我决定将数据保存到txt或二进制文件,然后在服务器开始运行后上传它们。但是,我如何确定Web服务是否不可用。如果我将数据存储到catch块中的文件中,它将在出现错误时存储,而不仅仅是webservice不可用的错误。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我将引入一个排队系统(例如MSMQ或NServiceBus),以便Windows服务只需要将消息放入队列中,而其他东西(与Web服务共处)可以使消息出列并应用他们(直接或通过网络服务方法)。

当所有内容都启动并运行时,它不应该在当前(直接)Web服务调用上引入更多开销,并且当Web服务关闭时,所有内容都会在排队系统中建立。

答案 1 :(得分:0)

您可以在服务的端点URL上发出http请求,并检查一切是否正常:

var url = "http://....";
//OR
var url = service_object.Url;
var request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 2000; //timeout 20 seconds
HttpWebResponse response = null;
try
{
    response = (HttpWebResponse)request.GetResponse();
    if (response.StatusCode != HttpStatusCode.OK)
    {
        throw new ApplicationException(response.StatusDescription);
    }
}
catch (ApplicationException ex)
{
    //Do what you want here, create a file for example...
}