我在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();
    }
}

10-07 21:47