protected override void SendFaultReply(Microsoft.Transactions.Wsat.Messaging.RequestAsyncResult result, Fault fault)
 {
     ActivationProxy.SendFaultResponse(result, fault);
 }
 private void RefreshActivationProxy(EndpointAddress suggestedAddress)
 {
     EndpointAddress address = suggestedAddress;
     if (address == null)
     {
         address = this.wsatConfig.LocalActivationService(this.protocolVersion);
         if (address == null)
         {
             address = this.wsatConfig.RemoteActivationService(this.protocolVersion);
         }
     }
     if (address == null)
     {
         DiagnosticUtility.FailFast("Must have valid activation service address");
     }
     lock (this.proxyLock)
     {
         ActivationProxy proxy = this.CreateActivationProxy(address);
         if (this.activationProxy != null)
         {
             this.activationProxy.Release();
         }
         this.activationProxy = proxy;
     }
 }
        //=============================================================================================
        // The demand is not added now (in 4.5), to avoid a breaking change. To be considered in the next version.
        /*
        // We demand full trust because we call ActivationProxy.Release(), which is defined in a non-APTCA assembly and can do Environment.FailFast. 
        // It's recommended to not let partially trusted callers to bring down the process.
        // WSATs are not supported in partial trust, so customers should not be broken by this demand.
        [PermissionSet(SecurityAction.Demand, Unrestricted = true)]
        */
        void RefreshActivationProxy(EndpointAddress suggestedAddress)
        {
            // Pick an address in the following order...
            EndpointAddress address = suggestedAddress;

            if (address == null)
            {
                address = this.wsatConfig.LocalActivationService(this.protocolVersion);

                if (address == null)
                {
                    address = this.wsatConfig.RemoteActivationService(this.protocolVersion);
                }
            }

            if (!(address != null))
            {
                // tx processing requires failfast when state is inconsistent
                DiagnosticUtility.FailFast("Must have valid activation service address");
            }

            lock (this.proxyLock)
            {
                ActivationProxy newProxy = CreateActivationProxy(address);
                if (this.activationProxy != null)
                    this.activationProxy.Release();
                this.activationProxy = newProxy;
            }
        }