Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Transactions / WsatRegistrationHeader.cs / 1 / WsatRegistrationHeader.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Transactions { using System; using System.ServiceModel.Channels; using System.Diagnostics; using System.ServiceModel; using System.Xml; using Microsoft.Transactions.Wsat.Messaging; using XD = System.ServiceModel.XD; class WsatRegistrationHeader : AddressHeader { const string HeaderName = DotNetAtomicTransactionExternalStrings.RegisterInfo; const string HeaderNamespace = DotNetAtomicTransactionExternalStrings.Namespace; Guid transactionId; string contextId; string tokenId; public WsatRegistrationHeader(Guid transactionId, string contextId, string tokenId) { this.transactionId = transactionId; this.contextId = contextId; this.tokenId = tokenId; } public override string Name { get { return HeaderName; } } public override string Namespace { get { return HeaderNamespace; } } public Guid TransactionId { get { return this.transactionId; } } public string ContextId { get { return this.contextId; } } public string TokenId { get { return this.tokenId; } } protected override void OnWriteStartAddressHeader (XmlDictionaryWriter writer) { writer.WriteStartElement(DotNetAtomicTransactionExternalStrings.Prefix, XD.DotNetAtomicTransactionExternalDictionary.RegisterInfo, XD.DotNetAtomicTransactionExternalDictionary.Namespace); } protected override void OnWriteAddressHeaderContents (XmlDictionaryWriter writer) { writer.WriteStartElement(XD.DotNetAtomicTransactionExternalDictionary.LocalTransactionId, XD.DotNetAtomicTransactionExternalDictionary.Namespace); writer.WriteValue(this.transactionId); writer.WriteEndElement(); if (this.contextId != null) { writer.WriteStartElement(XD.DotNetAtomicTransactionExternalDictionary.ContextId, XD.DotNetAtomicTransactionExternalDictionary.Namespace); writer.WriteValue(this.contextId); writer.WriteEndElement(); } if (this.tokenId != null) { writer.WriteStartElement(XD.DotNetAtomicTransactionExternalDictionary.TokenId, XD.DotNetAtomicTransactionExternalDictionary.Namespace); writer.WriteValue(this.tokenId); writer.WriteEndElement(); } } public static WsatRegistrationHeader ReadFrom(Message message) { int index; try { index = message.Headers.FindHeader(HeaderName, HeaderNamespace); } catch (MessageHeaderException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); return null; } if (index < 0) { return null; } WsatRegistrationHeader header; XmlDictionaryReader reader = message.Headers.GetReaderAtHeader(index); using (reader) { try { header = ReadFrom(reader); } catch (XmlException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Error); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidEnlistmentHeaderException(e.Message, e)); } } MessageHeaderInfo headerInfo = message.Headers[index]; if (!message.Headers.UnderstoodHeaders.Contains(headerInfo)) { message.Headers.UnderstoodHeaders.Add(headerInfo); } return header; } static WsatRegistrationHeader ReadFrom(XmlDictionaryReader reader) { reader.ReadFullStartElement(XD.DotNetAtomicTransactionExternalDictionary.RegisterInfo, XD.DotNetAtomicTransactionExternalDictionary.Namespace); reader.MoveToStartElement(XD.DotNetAtomicTransactionExternalDictionary.LocalTransactionId, XD.DotNetAtomicTransactionExternalDictionary.Namespace); // TransactionId Guid transactionId = reader.ReadElementContentAsGuid(); if (transactionId == Guid.Empty) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new XmlException(SR.GetString(SR.InvalidRegistrationHeaderTransactionId))); } // ContextId string contextId; if (reader.IsStartElement(XD.DotNetAtomicTransactionExternalDictionary.ContextId, XD.DotNetAtomicTransactionExternalDictionary.Namespace)) { Uri uri; contextId = reader.ReadElementContentAsString().Trim(); if (contextId.Length == 0 || contextId.Length > CoordinationContext.MaxIdentifierLength || !Uri.TryCreate(contextId, UriKind.Absolute, out uri)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new XmlException(SR.GetString(SR.InvalidRegistrationHeaderIdentifier))); } } else { contextId = null; } // TokenId string tokenId; if (reader.IsStartElement(XD.DotNetAtomicTransactionExternalDictionary.TokenId, XD.DotNetAtomicTransactionExternalDictionary.Namespace)) { tokenId = reader.ReadElementContentAsString().Trim(); if (tokenId.Length == 0) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new XmlException(SR.GetString(SR.InvalidRegistrationHeaderTokenId))); } } else { tokenId = null; } // Skip unknown elements while (reader.IsStartElement()) { reader.Skip(); } reader.ReadEndElement(); return new WsatRegistrationHeader(transactionId, contextId, tokenId); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ACL.cs
- X509CertificateValidator.cs
- StrokeNodeOperations2.cs
- DynamicActivityProperty.cs
- StringUtil.cs
- DecoderFallback.cs
- XslUrlEditor.cs
- SafeArrayRankMismatchException.cs
- DrawListViewItemEventArgs.cs
- ConfigurationHandlersInstallComponent.cs
- UInt16.cs
- AssemblyAttributesGoHere.cs
- ResourcesBuildProvider.cs
- SqlTrackingWorkflowInstance.cs
- DataControlButton.cs
- Propagator.cs
- ConfigurationSettings.cs
- xmlglyphRunInfo.cs
- HelpEvent.cs
- TextServicesProperty.cs
- StubHelpers.cs
- EditorZoneAutoFormat.cs
- DbParameterCollection.cs
- ObjectDataSourceChooseMethodsPanel.cs
- PanelDesigner.cs
- CachedPathData.cs
- IgnoreFlushAndCloseStream.cs
- Item.cs
- RegexMatchCollection.cs
- OdbcConnectionHandle.cs
- EasingFunctionBase.cs
- FilteredDataSetHelper.cs
- DataRowView.cs
- TransformGroup.cs
- SafeFileMappingHandle.cs
- RayHitTestParameters.cs
- XmlObjectSerializerReadContext.cs
- RepeaterDataBoundAdapter.cs
- DeploymentSectionCache.cs
- Image.cs
- VirtualPathUtility.cs
- SequentialOutput.cs
- RootAction.cs
- TabPage.cs
- complextypematerializer.cs
- DataGridViewCellStyleChangedEventArgs.cs
- LogRestartAreaEnumerator.cs
- LogRestartAreaEnumerator.cs
- DomainConstraint.cs
- hresults.cs
- SettingsSavedEventArgs.cs
- InputScopeNameConverter.cs
- DataSourceGroupCollection.cs
- SafeCertificateStore.cs
- TypeSystem.cs
- QilInvokeEarlyBound.cs
- JsonDeserializer.cs
- CatalogZone.cs
- CompatibleIComparer.cs
- ExpressionVisitor.cs
- DecimalAnimationBase.cs
- ListViewSelectEventArgs.cs
- StoragePropertyMapping.cs
- CryptoHelper.cs
- HttpConfigurationSystem.cs
- PauseStoryboard.cs
- HtmlElementEventArgs.cs
- ResXResourceSet.cs
- HashCodeCombiner.cs
- Scheduling.cs
- WindowsGraphicsCacheManager.cs
- XmlCodeExporter.cs
- FixedPageProcessor.cs
- InsufficientExecutionStackException.cs
- Terminate.cs
- DataSourceControlBuilder.cs
- PaintEvent.cs
- MenuEventArgs.cs
- TextOutput.cs
- SmtpNtlmAuthenticationModule.cs
- IgnorePropertiesAttribute.cs
- ConfigXmlWhitespace.cs
- DefaultSerializationProviderAttribute.cs
- PriorityBindingExpression.cs
- XamlInt32CollectionSerializer.cs
- UriTemplateEquivalenceComparer.cs
- CqlLexer.cs
- FunctionQuery.cs
- SystemIPInterfaceStatistics.cs
- SqlCacheDependencySection.cs
- EntityDataReader.cs
- SslStream.cs
- MouseActionConverter.cs
- ObjectConverter.cs
- StrokeFIndices.cs
- Pair.cs
- XsdCachingReader.cs
- Gdiplus.cs
- OdbcUtils.cs
- Duration.cs