我想监视 WCF 服务器,如果服务器关闭,则发送电子邮件通知。为此,我正在编写一个控制台应用程序来定期向服务器发送虚拟请求,并检查是否发回了响应。当控制台应用程序收到异常时,服务器出现问题,包括服务器关闭。
但是,问题是我在服务器的不同状态下收到了不同的异常。以下是服务器处于不同状态时返回的异常。但是,似乎都属于服务器停机类别。任何想法??:
当 IIS 关闭时
System.ServiceModel.EndpointNotFoundException,
消息:
在http://localhost/service.svc上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。内部异常消息:远程服务器返回错误:(404)未找到
当Web.config
文件被故意更改为错误名称时:
System.ServiceModel.ServiceActivationException
链接: http://localhost/service.svc
消息:
请求的服务“http://localhost/service.svc”无法激活。有关详细信息,请参阅服务器的诊断跟踪日志。
其他不明原因
System.ServiceModel.ServerTooBusyException
消息:
位于http://localhost/service.svc的 HTTP 服务太忙。
消息:
远程服务器返回错误:(503)服务器不可用。
更新 1
异常并不总是返回 http 状态代码。
更新 2 除了使用 WCF 代理调用服务外,我还必须使用 WebRequest,如下所示:
try
{
WebRequest webRequest = WebRequest.Create(uri);
webRequest.Method = "GET";
HttpWebResponse httpWebResponse = (HttpWebResponse)webRequest.GetResponse();
}
catch () //what excpetion will tell me server is down??
{
...
}