Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / Messaging / MessageDispatch.cs / 1 / MessageDispatch.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- // Implement generic reception of datagram and request messages using System; using System.ServiceModel.Channels; using System.Diagnostics; using System.ServiceModel; using Microsoft.Transactions.Wsat.Protocol; using DiagnosticUtility = Microsoft.Transactions.Bridge.DiagnosticUtility; namespace Microsoft.Transactions.Wsat.Messaging { abstract class DatagramMessageDispatcher { ProtocolVersion protocolVersion; protected DatagramMessageDispatcher(ProtocolVersion protocolVersion) { this.protocolVersion = protocolVersion; } protected abstract DatagramProxy CreateFaultProxy(EndpointAddress to); protected void OnMessageException(Message message, CommunicationException exception) { DebugTrace.Trace ( TraceLevel.Warning, "{0} - {1} reading datagram with action {2}: {3}", this.GetType().Name, exception.GetType().Name, message.Headers.Action, exception.Message); EndpointAddress sendTo = Library.GetFaultToHeader(message.Headers, this.protocolVersion); if (sendTo == null) { DebugTrace.Trace ( TraceLevel.Warning, "Ignoring invalid datagram - a fault-to header could not be obtained" ); } else { DatagramProxy proxy = null; try { proxy = CreateFaultProxy(sendTo); } catch (CreateChannelFailureException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); DebugTrace.Trace (TraceLevel.Warning, "Ignoring invalid datagram: {0}", e.Message); } if (proxy != null) { try { IAsyncResult ar = proxy.BeginSendFault (message.Headers.MessageId, Faults.Version(this.protocolVersion).InvalidParameters, null, null); proxy.EndSendMessage (ar); if (DebugTrace.Warning) { DebugTrace.Trace ( TraceLevel.Warning, "Sent InvalidParameters fault to {0}", proxy.To.Uri ); } } catch (WsatSendFailureException e) { DiagnosticUtility.ExceptionUtility.TraceHandledException(e, TraceEventType.Warning); if (DebugTrace.Warning) { DebugTrace.Trace ( TraceLevel.Warning, "{0} sending InvalidParameters fault to {1}: {2}", e.GetType().Name, proxy.To.Uri, e.Message); } } finally { proxy.Release(); } } } } } abstract class RequestMessageDispatcher { protected abstract void SendFaultReply (RequestAsyncResult result, Fault fault); protected void OnMessageException (RequestAsyncResult result, Message message, CommunicationException exception, Fault fault) { DebugTrace.Trace ( TraceLevel.Warning, "{0} - {1} reading request with action {2}: {3}", this.GetType().Name, exception.GetType().Name, message.Headers.Action, exception.Message); SendFaultReply (result, fault); DebugTrace.Trace (TraceLevel.Warning, "Replied with {0} fault", fault.Code.Name); } } } // 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
- Run.cs
- XmlEncoding.cs
- XpsStructure.cs
- HttpCapabilitiesBase.cs
- ResourceKey.cs
- TemplateControl.cs
- ValidationVisibilityAttribute.cs
- SamlSerializer.cs
- WebServicesDescriptionAttribute.cs
- Propagator.JoinPropagator.cs
- DbProviderFactoriesConfigurationHandler.cs
- SafeEventLogWriteHandle.cs
- SecurityHelper.cs
- ColorConverter.cs
- DrawingAttributesDefaultValueFactory.cs
- SHA1Managed.cs
- SafeUserTokenHandle.cs
- UserMapPath.cs
- Socket.cs
- DataSourceGroupCollection.cs
- SqlSupersetValidator.cs
- SmtpSection.cs
- SortedDictionary.cs
- messageonlyhwndwrapper.cs
- FrameworkContextData.cs
- FontCacheLogic.cs
- Pool.cs
- LinearGradientBrush.cs
- ClientSession.cs
- ToolStripRenderer.cs
- NavigatorInvalidBodyAccessException.cs
- webproxy.cs
- SpnegoTokenProvider.cs
- ErrorFormatterPage.cs
- Matrix.cs
- RelationshipDetailsCollection.cs
- RemoteWebConfigurationHost.cs
- Helpers.cs
- StatusBarAutomationPeer.cs
- FrugalList.cs
- XmlSchemaAnyAttribute.cs
- ToolStripItemClickedEventArgs.cs
- MarshalDirectiveException.cs
- DataObjectFieldAttribute.cs
- UpdatePanelControlTrigger.cs
- FormsAuthenticationUser.cs
- MatrixUtil.cs
- EmbeddedObject.cs
- MetafileHeaderWmf.cs
- StorageMappingItemCollection.cs
- AppDomainUnloadedException.cs
- Int16Animation.cs
- DesignTableCollection.cs
- InvokeGenerator.cs
- SqlConnection.cs
- DataObjectMethodAttribute.cs
- ProxyWebPartManager.cs
- ReceiveCompletedEventArgs.cs
- FileUpload.cs
- VScrollProperties.cs
- LabelEditEvent.cs
- NamespaceMapping.cs
- CodeGenerator.cs
- ScriptServiceAttribute.cs
- XmlCharacterData.cs
- BaseCollection.cs
- TabItem.cs
- DataGridViewTextBoxColumn.cs
- storepermissionattribute.cs
- Roles.cs
- KeyEventArgs.cs
- Int32AnimationUsingKeyFrames.cs
- AlphabeticalEnumConverter.cs
- Error.cs
- SchemaEntity.cs
- DocumentGrid.cs
- SoapIncludeAttribute.cs
- Debug.cs
- DataTrigger.cs
- TabItem.cs
- DbFunctionCommandTree.cs
- ActivityTypeResolver.xaml.cs
- RelOps.cs
- MsmqQueue.cs
- Opcode.cs
- EventTrigger.cs
- CodeNamespace.cs
- DataGridViewColumnTypeEditor.cs
- MultiAsyncResult.cs
- MemberJoinTreeNode.cs
- SvcMapFileSerializer.cs
- Column.cs
- OdbcCommand.cs
- AutomationPattern.cs
- Int32Storage.cs
- ActiveXHelper.cs
- LOSFormatter.cs
- QuadraticEase.cs
- ValidationErrorEventArgs.cs
- MessagePropertyFilter.cs