示例#1
0
        private static bool GetRemoteEnlistmentId(EndpointAddress address, out Guid remoteEnlistmentId)
        {
            AddressHeaderCollection headers = address.Headers;

            if (headers.Count == 1)
            {
                AddressHeader header = headers.FindHeader("Enlistment", "http://schemas.microsoft.com/ws/2006/02/transactions");
                if (header != null)
                {
                    XmlDictionaryReader addressHeaderReader = header.GetAddressHeaderReader();
                    XmlDictionaryReader reader2             = addressHeaderReader;
                    try
                    {
                        ControlProtocol protocol;
                        EnlistmentHeader.ReadFrom(addressHeaderReader, out remoteEnlistmentId, out protocol);
                        return(protocol == ControlProtocol.Durable2PC);
                    }
                    catch (InvalidEnlistmentHeaderException exception)
                    {
                        Microsoft.Transactions.Bridge.DiagnosticUtility.ExceptionUtility.TraceHandledException(exception, TraceEventType.Information);
                    }
                    finally
                    {
                        if (reader2 != null)
                        {
                            reader2.Dispose();
                        }
                    }
                }
            }
            remoteEnlistmentId = Guid.Empty;
            return(false);
        }
示例#2
0
        public static SelectorSetHeader ReadFrom(EndpointAddress address)
        {
            AddressHeader header = address.Headers.FindHeader(ElementName, ManagementNamespaces.Namespace);

            if (header == null)
            {
                return(null);
            }
            using (XmlDictionaryReader readerAtHeader = header.GetAddressHeaderReader())
            {
                return(ReadFrom(readerAtHeader));
            }
        }