为什么我在服务器端 try 不到客户端回调所 throw 的异常,使用的binding是 netTcpBinding 代码如下:
1.契约
[ServiceContract(CallbackContract = typeof(IDuplexCallback))]
public interface IDuplex
{
    [OperationContract]
    void DoWork();
}public interface IDuplexCallback
{
     [FaultContract(typeof(ArgumentNullException))]
     [OperationContract]
     void DoCallback();
}2.服务
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]
public class Duplex : Contracts.IDuplex
{
    public void DoWork()
    {
        Debug.WriteLine("DoWork");        var callback = OperationContext.Current.GetCallbackChannel<Contracts.IDuplexCallback>();
        if (callback != null)
        {
            try
            {
                callback.DoCallback();
            }
            catch (FaultException<ArgumentNullException> ex)
            {
                Debug.WriteLine(ex.Detail.Message);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
    }
}
3.客户端回调实现
public class DuplexCallback : Duplex.IDuplexCallback
{
    public void DoCallback()
    {
        Debug.WriteLine("DoCallback");        throw new FaultException<ArgumentNullException>(new ArgumentNullException("sdfsdf"));
    }
}
4.客户端调用
 var callback = new DuplexCallback();
 var instanceContext = new InstanceContext(callback);
 var proxyObj = new Duplex.DuplexClient(instanceContext);
 proxyObj.DoWork();
 Console.ReadKey();