Jean-MichelBezeauによって投稿された回答のおかげで次のコードがあります
bool isAlive = false;
string fixedAddress = "http://localhost:8732/Design_Time_Addresses/WCFService/mex";
System.ServiceModel.Description.ServiceEndpointCollection availableBindings = System.ServiceModel.Description.MetadataResolver.Resolve(typeof(WCFService.IAlive), new EndpointAddress(fixedAddress));
ChannelFactory<WCFService.IAlive> factoryService = new ChannelFactory<WCFService.IAlive>(availableBindings[0]);
WCFService.IAlive accesService = factoryService.CreateChannel();
isAlive = accesService.IsAlive();
WCFサービスにアクセスできない場合でもプログラムを続行して、誰かに電子メールで通知してログに追加できるようにしたいと思います。私はそれをこのようにすることを考えました:
bool isAlive = false;
try
{
string fixedAddress = "http://localhost:8732/Design_Time_Addresses/WCFService/mex";
System.ServiceModel.Description.ServiceEndpointCollection availableBindings = System.ServiceModel.Description.MetadataResolver.Resolve(typeof(WCFService.IAlive), new EndpointAddress(fixedAddress));
ChannelFactory<WCFService.IAlive> factoryService = new ChannelFactory<WCFService.IAlive>(availableBindings[0]);
WCFService.IAlive accesService = factoryService.CreateChannel();
isAlive = accesService.IsAlive();
}
catch {}
finally
{
if (isAlive)
{
//add success message to log
}
else
{
//add warning message to log
//send email notification
}
}
しかし、私はそのようなすべての例外をキャッチするのは好きではありません(私はそれが悪い習慣であることを知っています)。これについて行くための最良の方法は何ですか?
キャッチすべき特別な例外はありますか?または、これはusingステートメントを実装するのに良い時期ですか(もしそうなら、私はその方法についていくつかの助けを得ることができます)?