如何检查Web服务中的方法是否正常工作?我不能使用ping。我仍然想检查客户端从Web服务调用的任何类型的方法。我知道这很难概括,但应该有一些方法。
gpnt7bae1#
我使用这个方法,它工作得很好:
public bool IsAddressAvailable(string address) { try { System.Net.WebClient client = new WebClient(); client.DownloadData(address); return true; } catch { return false; } }
e4eetjau2#
要知道Web服务方法是否“正常”工作,唯一的方法是调用该方法,然后评估结果是否“正常”。如果您想保留“正常”与时间的记录,则可以记录评估结果。没有比这更通用的方法了。考虑一下:1.您可以使用创建到服务端点的HTTP连接的代码,但是成功并不能告诉您服务是否会在您向其发送任何消息时立即抛出异常。1.您可以连接并向它发送一条无效消息,但这并不能说明什么。1.您可以连接并发送一条有效的消息,然后检查结果以确保它是有效的。这将使您给予一个很好的想法,即当一个真实的客户端随后立即调用该服务时,该真实的客户端应该期望一个有效的结果。1.除非服务把这当作一个崩溃的机会,只是为了气你!最好的技术是使用WCF跟踪(可能使用消息级跟踪)来记录服务实际发生的事情,无论是好的还是坏的。
qfe3c7zg3#
Powershell是一种到目前为止“ping”web服务端点的简单方法。使用以下表达式:
Test-NetConnection -Port 4408 -ComputerName 192.168.134.1
这是一个不存在或未侦听的端口的失败响应;
WARNING: TCP connect to 192.168.134.1:4408 failed ComputerName : 192.168.134.1 RemoteAddress : 192.168.134.1 RemotePort : 4408 InterfaceAlias : Ethernet0 SourceAddress : 192.168.134.1 PingSucceeded : True PingReplyDetails (RTT) : 0 ms TcpTestSucceeded : False
如果地址/端口处于侦听状态且可访问,则会出现以下成功结果:
ComputerName : 192.168.134.1 RemoteAddress : 192.168.134.1 RemotePort : 4407 InterfaceAlias : Ethernet0 SourceAddress : 192.168.134.1 TcpTestSucceeded : True
gudnpqoy4#
只需在您的webservice方法中使用try catch,并将异常记录到日志文件或事件日志中。示例:
[OperationContract] public bool isGUID(string input) { bool functionReturnValue = false; try { Guid guid; functionReturnValue = Guid.TryParse(input, guid); } catch (Exception ex) { Log.WriteServerErrorLog(ex); } return functionReturnValue; }
你不需要ping webservice,而是用看门狗服务或其他东西ping服务器。没有必要“ping”webservice。我也认为你不需要这样做。要么你的webservice工作,要么它不工作,因为代码不好。
sd2nnvve5#
你可以试试curl。这是一个Linux工具,应该在Cygwin中也有。
curl
$ curl http://google.com <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/">here</A>. </BODY></HTML>
有很多选择;例子可以在'net中找到。
ryhaxcpt6#
你可以自己编写一个小工具或Windows服务或任何你需要的东西,然后看看这2篇文章:C#: How to programmatically check a web service is up and running?check to if web-service is up and running - efficiently编辑:这是我在一个类似场景中的实现,在这个场景中,我需要在每次调用之前知道外部服务是否仍然存在:
bool IsExternalServiceRunning { get { bool isRunning = false; try { var endpoint = new ServiceClient(); var serviceUri = endpoint.Endpoint.Address.Uri; var request = (HttpWebRequest)WebRequest.Create(serviceUri); request.Timeout = 1000000; var response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) isRunning = true; } #region catch (Exception ex) { // Handle error } #endregion return isRunning; } }
i34xakig7#
在我看来你有两个选择
使用像baretail这样的软件读取日志文件,该软件会在写入文件时进行更新。
流行的记录器内置了此功能。(Log4Net,.)
bfhwhh0e8#
你也可以使用跟踪。http://msdn.microsoft.com/en-us/library/ms732023.aspxhttp://msdn.microsoft.com/en-us/library/ms733025.aspx
np8igboo9#
如果您想要常规的控制服务,可以搜索相关平台,可以尝试https://fullcheck.app,它可以跟踪SLA。
9条答案
按热度按时间gpnt7bae1#
我使用这个方法,它工作得很好:
e4eetjau2#
要知道Web服务方法是否“正常”工作,唯一的方法是调用该方法,然后评估结果是否“正常”。如果您想保留“正常”与时间的记录,则可以记录评估结果。
没有比这更通用的方法了。考虑一下:
1.您可以使用创建到服务端点的HTTP连接的代码,但是成功并不能告诉您服务是否会在您向其发送任何消息时立即抛出异常。
1.您可以连接并向它发送一条无效消息,但这并不能说明什么。
1.您可以连接并发送一条有效的消息,然后检查结果以确保它是有效的。这将使您给予一个很好的想法,即当一个真实的客户端随后立即调用该服务时,该真实的客户端应该期望一个有效的结果。
1.除非服务把这当作一个崩溃的机会,只是为了气你!
最好的技术是使用WCF跟踪(可能使用消息级跟踪)来记录服务实际发生的事情,无论是好的还是坏的。
qfe3c7zg3#
Powershell是一种到目前为止“ping”web服务端点的简单方法。
使用以下表达式:
这是一个不存在或未侦听的端口的失败响应;
如果地址/端口处于侦听状态且可访问,则会出现以下成功结果:
gudnpqoy4#
只需在您的webservice方法中使用try catch,并将异常记录到日志文件或事件日志中。示例:
你不需要ping webservice,而是用看门狗服务或其他东西ping服务器。没有必要“ping”webservice。我也认为你不需要这样做。要么你的webservice工作,要么它不工作,因为代码不好。
sd2nnvve5#
你可以试试
curl
。这是一个Linux工具,应该在Cygwin中也有。有很多选择;例子可以在'net中找到。
ryhaxcpt6#
你可以自己编写一个小工具或Windows服务或任何你需要的东西,然后看看这2篇文章:
C#: How to programmatically check a web service is up and running?
check to if web-service is up and running - efficiently
编辑:这是我在一个类似场景中的实现,在这个场景中,我需要在每次调用之前知道外部服务是否仍然存在:
i34xakig7#
在我看来你有两个选择
使用像baretail这样的软件读取日志文件,该软件会在写入文件时进行更新。
流行的记录器内置了此功能。(Log4Net,.)
bfhwhh0e8#
你也可以使用跟踪。
http://msdn.microsoft.com/en-us/library/ms732023.aspx
http://msdn.microsoft.com/en-us/library/ms733025.aspx
np8igboo9#
如果您想要常规的控制服务,可以搜索相关平台,可以尝试https://fullcheck.app,它可以跟踪SLA。