如何检查Web服务中的方法是否正常?我不能用ping。我仍然想检查客户端从Web服务调用的任何方法。我知道很难概括,但应该有一些方法。
答案 0 :(得分:4)
了解Web服务方法是否正常工作的唯一方法是调用该方法,然后评估结果是否“正常”。如果您想保留“罚款”与时间的记录,那么您可以记录评估结果。
没有更通用的方法可以做到这一点。考虑:
最好的技术是使用WCF跟踪(可能带有消息级别跟踪)来记录服务实际发生的情况,无论好坏。然后,人类可以查看日志以查看它们是否“正常”。
答案 1 :(得分:3)
我使用这种方法并且工作正常:
public bool IsAddressAvailable(string address)
{
try
{
System.Net.WebClient client = new WebClient();
client.DownloadData(address);
return true;
}
catch
{
return false;
}
}
答案 2 :(得分:1)
只需在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 Web服务,而是使用监视服务或其他东西ping服务器。没有必要“ping”Web服务。我还认为你无论如何都不需要这样做。 由于代码错误,您的网络服务可以正常工作,也可以不工作。
答案 3 :(得分:1)
你可以自己编写一个小工具或Windows服务或任何你需要的东西然后看看这两篇文章:
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;
}
}
答案 4 :(得分:1)
到目前为止,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
答案 5 :(得分:0)
您可以尝试curl
。这是一个Linux工具,也应该在Cygwin中。
$ 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。
中找到答案 6 :(得分:0)
在我看来,你有两个选择:
答案 7 :(得分:0)