【问题标题】:Handling service unavailable errors in asp.net处理asp.net中的服务不可用错误
【发布时间】:2011-02-18 12:03:23
【问题描述】:
我有一个 asp.net 应用程序,它将始终与 wcf 服务交互以处理数据。我的问题是服务是否未运行或某些原因超时。我需要如何处理来自我的消费应用程序的服务异常。
我们使用故障契约异常来处理我们在服务中遇到的任何运行时异常。但是如果服务本身没有运行,我如何向用户发送一条客户消息,说“服务不可用,请运行服务”。
感谢您对此的帮助。
谢谢,
基兰
【问题讨论】:
标签:
asp.net
wcf
exception-handling
【解决方案1】:
假设您的服务接受 http get,一种选择是使用以下方式从客户端询问服务元数据:
var svcUri = new Uri("http://yourhost/service.svc?wsdl");
MetadataExchangeClient mexClient = new MetadataExchangeClient(svcUri, MetadataExchangeClientMode.HttpGet);
var isHealthy = true;
try
{
MetadataSet metadata = mexClient.GetMetadata();
}
catch (Exception ex)
{
isHealthy = false;
}
另一种选择是添加一个“heartbeat”方法,该方法向服务本身返回一个 int 或 bool,您可以定期从客户端调用。