Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / Messaging / Library.cs / 1 / Library.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- // Implement helper methods that wrap ServiceModel functionality using System; using System.Diagnostics; using System.ServiceModel.Channels; using System.Globalization; using System.ServiceModel; using System.Xml; using Microsoft.Transactions.Wsat.Protocol; using DiagnosticUtility = Microsoft.Transactions.Bridge.DiagnosticUtility; namespace Microsoft.Transactions.Wsat.Messaging { static class Library { public static Message CreateFaultMessage(UniqueId messageID, MessageVersion messageVersion, Fault fault) { FaultCode senderCode = FaultCode.CreateSenderFaultCode(fault.Code); MessageFault messageFault = MessageFault.CreateFault(senderCode, fault.Reason); Message message = Message.CreateMessage(messageVersion, messageFault, messageVersion.Addressing.FaultAction); // Customize our fault message message.Headers.Action = fault.Action; if (messageID != null) { message.Headers.RelatesTo = messageID; } return message; } public static void SendFaultResponse(RequestAsyncResult result, Fault fault) { Message message = Library.CreateFaultMessage(result.MessageId, result.MessageVersion, fault); result.Finished(message); } public static FaultCode GetBaseFaultCode(MessageFault fault) { FaultCode code = fault.Code; if (code != null) { while (code.SubCode != null) { code = code.SubCode; } } return code; } public static string GetFaultCodeName(MessageFault fault) { FaultCode code = fault.Code; if (code == null) { return "unknown"; } if (code.SubCode != null) { code = code.SubCode; if (code == null) { return "unknown"; } } return code.Name; } public static string GetFaultCodeReason(MessageFault fault) { FaultReason reason = fault.Reason; if (reason == null) { return "unknown"; } FaultReasonText reasonText; try { reasonText = reason.GetMatchingTranslation(CultureInfo.CurrentCulture); } catch (ArgumentException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); return "unknown"; } return reasonText.Text; } public static EndpointAddress GetReplyToHeader(MessageHeaders headers) { // According to WS-Addressing, the proper search order is ReplyTo, From EndpointAddress replyTo = headers.ReplyTo; if (replyTo == null || replyTo.IsNone || replyTo.IsAnonymous) { replyTo = headers.From; } return replyTo; } public static EndpointAddress GetFaultToHeader(MessageHeaders headers, ProtocolVersion protocolVersion) { ProtocolVersionHelper.AssertProtocolVersion(protocolVersion, typeof(Library), "GetFaultToHeader"); switch(protocolVersion) { case ProtocolVersion.Version10: return GetFaultToHeader10(headers); case ProtocolVersion.Version11: return GetFaultToHeader11(headers); default: return null; // inaccessible path because we have asserted the protocol version } } static EndpointAddress GetFaultToHeader10(MessageHeaders headers) { // According to WS-Addressing, the proper search order is FaultTo, ReplyTo, From EndpointAddress faultTo = headers.FaultTo; if (faultTo == null) { faultTo = headers.ReplyTo; if (faultTo == null) { faultTo = headers.From; } } return faultTo; } static EndpointAddress GetFaultToHeader11(MessageHeaders headers) { // According to WS-AT 1.1 (06/01/2006) spec we send faults to the 'source endpoint' (From) EndpointAddress sourceAddress = headers.From; if(sourceAddress == null || sourceAddress.IsNone || sourceAddress.IsAnonymous) { return null; } return sourceAddress; } } } // 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
- EdmSchemaError.cs
- MeasureItemEvent.cs
- Decoder.cs
- RoutedUICommand.cs
- SqlCharStream.cs
- DesignOnlyAttribute.cs
- DirectoryObjectSecurity.cs
- AspNetHostingPermission.cs
- ContentDisposition.cs
- SafeViewOfFileHandle.cs
- DrawingGroupDrawingContext.cs
- CodeTypeMember.cs
- StreamResourceInfo.cs
- UIElementPropertyUndoUnit.cs
- SafeMILHandle.cs
- ToolboxItemImageConverter.cs
- DispatcherHooks.cs
- FormViewPageEventArgs.cs
- COM2ExtendedBrowsingHandler.cs
- SchemaTableOptionalColumn.cs
- RectAnimation.cs
- CustomError.cs
- ValueCollectionParameterReader.cs
- ItemContainerGenerator.cs
- SQLBoolean.cs
- SerializationInfo.cs
- PropertyMetadata.cs
- SoapAttributeAttribute.cs
- DrawingState.cs
- mediaclock.cs
- TypeUnloadedException.cs
- AutomationAttributeInfo.cs
- AtomParser.cs
- ContextMenu.cs
- RangeContentEnumerator.cs
- DragAssistanceManager.cs
- DataGridViewCell.cs
- HighlightComponent.cs
- IMembershipProvider.cs
- AttributeProviderAttribute.cs
- StatusBarItemAutomationPeer.cs
- ListViewUpdatedEventArgs.cs
- ParagraphResult.cs
- EditorZone.cs
- ToolboxItemFilterAttribute.cs
- XamlSerializerUtil.cs
- ZoneButton.cs
- OleServicesContext.cs
- String.cs
- InstanceLockQueryResult.cs
- Buffer.cs
- ElementHost.cs
- XmlDataSourceView.cs
- StandardOleMarshalObject.cs
- SqlBulkCopyColumnMappingCollection.cs
- TriggerBase.cs
- TokenDescriptor.cs
- ObsoleteAttribute.cs
- DefaultMemberAttribute.cs
- MonikerUtility.cs
- AuthenticationModulesSection.cs
- ChangesetResponse.cs
- OleTxTransaction.cs
- UTF7Encoding.cs
- TemplateXamlTreeBuilder.cs
- ProfileModule.cs
- DragCompletedEventArgs.cs
- XmlCodeExporter.cs
- ServiceDocumentFormatter.cs
- SoapHeader.cs
- BinaryWriter.cs
- XamlVector3DCollectionSerializer.cs
- CatalogPartCollection.cs
- UpdateManifestForBrowserApplication.cs
- ConfigPathUtility.cs
- PageHandlerFactory.cs
- SqlComparer.cs
- TypeInfo.cs
- OleStrCAMarshaler.cs
- KnowledgeBase.cs
- VolatileResourceManager.cs
- Token.cs
- NonSerializedAttribute.cs
- ItemCheckEvent.cs
- WinInetCache.cs
- SchemaImporterExtensionElement.cs
- AccessDataSource.cs
- httpapplicationstate.cs
- CompiledELinqQueryState.cs
- ExpressionVisitor.cs
- BinaryEditor.cs
- ProviderCollection.cs
- EntitySet.cs
- DataGridViewRowCollection.cs
- DataServiceRequestOfT.cs
- ArrangedElement.cs
- BufferedGraphicsContext.cs
- Oid.cs
- DispatcherFrame.cs
- AliasExpr.cs