WCF调用有时会无声地失败

时间:2012-03-05 09:42:27

标签: .net wcf

我实施了单向wcf方法。我按照本文中提到的方式处理webservice调用article我使用下面的类调用Web服务。

public delegate void UseServiceDelegate<T>(T proxy);

public static class Service<T>
{
    public static ChannelFactory<T> _channelFactory = new ChannelFactory<T>("*"); 

    public static void Use(UseServiceDelegate<T> codeBlock)
    {
        IClientChannel proxy = (IClientChannel)_channelFactory.CreateChannel();
        bool success = false;
        try
        {
            codeBlock((T)proxy);
            proxy.Close();
            success = true;
        }
        finally
        {
            if (!success)
            {
                proxy.Abort();
            }
        }
    }
}

Service<IOrderService>.Use(orderService=>
{
  orderService.PlaceOrder(request);
}

当我们将代码移动到生产环境时,有时wcf调用会在没有给出任何错误消息的情况下失败,有时它会正常工作。我在同一个应用程序中有服务和客户端。

任何帮助都非常感激。

我的界面:

[ServiceContract(SessionMode = SessionMode.NotAllowed)]
public interface IOrderService
{
        [OperationContract(IsOneWay = true)]
        void PlaceOrder(OrderRequest request);
}

2 个答案:

答案 0 :(得分:1)

您可以configure tracing使用service trace viewer查看输出中是否有任何描述性内容。

答案 1 :(得分:1)

在try语句中添加一个catch块,如果您不想在此处处理错误,请至少记录该消息。

    catch (Exception ex0)
    {
        // Log exception here
        throw; // will rethrow the same exception to outside
    }

这样,至少你会错过/忘记处理异常的日志