サービス呼び出しを行う前に、WCF サービスが利用可能かどうかを知りたいです。最善の方法は何ですか?
これを使用するのはどうですか:
bool isServiceUp = true;
try
{
string address = "http://localhost/MyService.svc?wsdl";
MetadataExchangeClient mexClient = new MetadataExchangeClient(new Uri(address), MetadataExchangeClientMode.HttpGet);
MetadataSet metadata = mexClient.GetMetadata();
// if service down I get the exception
}
catch (Exception ex)
{
isServiceUp = false;
}
私のサービスは net tcp バインディングを使用しています。
net tcp バインディングに使用できますか?
編集: JaredPar に感謝します。最初の呼び出しが成功し、2 番目の呼び出し中にサーバーがダウンしたとします。したがって、サービス呼び出しを行う前に、OPEN 状態にあるプロキシの状態を確認するため、最終的にタイムアウトになるサービス呼び出しを行います。オープンまたはクローズのタイムアウトを設定していないため、デフォルトでは 1 分かかり、プロキシを破棄するサービスの Fault イベント ハンドラーで呼び出しがキャッチされます。しかし、その時までに UI がハングします。
ガイドしてください。