我在ASP.NET MVC应用程序中使用了WCF,并且我的每个方法都包含try-catch-finally块。我想知道我是否正确关闭/中止WCF调用。
我知道“使用”语句不适用于WCF调用。
这是示例方法
public int GetInvalidOrdersCount()
{
OrderServiceClient svc = new OrderServiceClient();
try
{
return svc.GetInvalidOrdersCount();
}
catch (Exception)
{
svc.Abort();
throw;
}
finally
{
svc.Close();
}
}
最佳答案
在msdn上显示了“正确”调用方式的示例:
CalculatorClient wcfClient = new CalculatorClient();
try
{
Console.WriteLine(wcfClient.Add(4, 6));
wcfClient.Close();
}
catch (TimeoutException timeout)
{
// Handle the timeout exception.
wcfClient.Abort();
}
catch (CommunicationException commException)
{
// Handle the communication exception.
wcfClient.Abort();
}
在实施客户端时,我通常遵循这种模式。除此之外,您可能还想对客户端使用
using
进行处理:using (CalculatorClient wcfClient = new CalculatorClient())
{
try
{
return wcfClient.Add(4, 6);
}
catch (TimeoutException timeout)
{
// Handle the timeout exception.
wcfClient.Abort();
}
catch (CommunicationException commException)
{
// Handle the communication exception.
wcfClient.Abort();
}
}