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