Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / ServiceModel / Dispatcher / DurableMessageDispatchInspector.cs / 1305376 / DurableMessageDispatchInspector.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System.ServiceModel.Channels; class DurableMessageDispatchInspector : IDispatchMessageInspector { public const string NewDurableInstanceIdPropertyName = "newDurableInstanceIdProperty"; const string suppressContextOnReply = "suppressContextOnReply"; SessionMode sessionMode; public DurableMessageDispatchInspector(SessionMode sessionMode) { this.sessionMode = sessionMode; } public static void SuppressContextOnReply(OperationContext operationContext) { if (operationContext == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operationContext"); } operationContext.OutgoingMessageProperties[suppressContextOnReply] = true; } public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) { if (instanceContext == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("instanceContext"); } if (request == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("request"); } if (sessionMode != SessionMode.NotAllowed) { object result = null; if (request.Properties.TryGetValue(NewDurableInstanceIdPropertyName, out result)) { return result.ToString(); } } return null; } public void BeforeSendReply(ref Message reply, object correlationState) { try { if (reply != null) { ContextMessageProperty context = null; if (sessionMode == SessionMode.NotAllowed || reply.Properties.ContainsKey(suppressContextOnReply)) { if (ContextMessageProperty.TryGet(reply, out context)) { context.Context.Clear(); } } else { string newInstanceId = correlationState as string; if (newInstanceId != null) { if (!ContextMessageProperty.TryGet(reply, out context)) { context = new ContextMessageProperty(); context.Context[WellKnownContextProperties.InstanceId] = newInstanceId; context.AddOrReplaceInMessage(reply); } else { context.Context[WellKnownContextProperties.InstanceId] = newInstanceId; } } } } } finally { DurableInstance durableInstance = OperationContext.Current.InstanceContext.Extensions.Find(); if (durableInstance == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new InvalidOperationException( SR2.GetString( SR2.RequiredInstanceContextExtensionNotFound, typeof(DurableInstance).Name))); } //Decrement InstanceActivity Count durableInstance.DecrementActivityCount(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TableAutomationPeer.cs
- SecurityResources.cs
- HandlerBase.cs
- WebMethodAttribute.cs
- FixedSOMLineCollection.cs
- RecognizedWordUnit.cs
- LineVisual.cs
- ProcessHost.cs
- DataSetMappper.cs
- BoundsDrawingContextWalker.cs
- XmlHelper.cs
- ForEachAction.cs
- MappingException.cs
- Mouse.cs
- OutputCacheEntry.cs
- RsaSecurityTokenAuthenticator.cs
- ElementMarkupObject.cs
- LinqDataSourceStatusEventArgs.cs
- MarkupExtensionParser.cs
- MembershipSection.cs
- AuthStoreRoleProvider.cs
- PlainXmlDeserializer.cs
- DataListDesigner.cs
- BmpBitmapDecoder.cs
- RegexTree.cs
- IsolatedStorageFile.cs
- QuotedPrintableStream.cs
- ProcessInfo.cs
- TagPrefixInfo.cs
- DataSourceXmlSubItemAttribute.cs
- FloaterParaClient.cs
- TrustManagerPromptUI.cs
- ChineseLunisolarCalendar.cs
- KeyedHashAlgorithm.cs
- InputBuffer.cs
- XmlHierarchicalEnumerable.cs
- SingleResultAttribute.cs
- ScalarType.cs
- CompilationUtil.cs
- ImpersonationContext.cs
- ZipIOLocalFileBlock.cs
- EventListener.cs
- TransformerInfo.cs
- TableStyle.cs
- Stacktrace.cs
- ListControl.cs
- CalendarDesigner.cs
- PointCollectionConverter.cs
- _SSPIWrapper.cs
- GetIsBrowserClientRequest.cs
- CodeEntryPointMethod.cs
- NullReferenceException.cs
- StateChangeEvent.cs
- WebPartConnectionsCancelEventArgs.cs
- X509ChainElement.cs
- TypeUsage.cs
- BamlStream.cs
- TouchesOverProperty.cs
- TargetConverter.cs
- BitmapEffectGeneralTransform.cs
- RouteItem.cs
- RelationshipFixer.cs
- ContentPresenter.cs
- XmlCharCheckingWriter.cs
- Statements.cs
- Util.cs
- HttpContextWrapper.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- MouseActionConverter.cs
- XmlBinaryReader.cs
- EventRoute.cs
- IProvider.cs
- Int32CollectionConverter.cs
- RenderOptions.cs
- EpmCustomContentSerializer.cs
- StringHelper.cs
- DecimalFormatter.cs
- RequestCachePolicy.cs
- WebBrowserDesigner.cs
- HttpAsyncResult.cs
- XmlSerializerNamespaces.cs
- StylusCaptureWithinProperty.cs
- HtmlTableRow.cs
- SoapAttributes.cs
- MemberExpressionHelper.cs
- ChangeInterceptorAttribute.cs
- SqlDataSourceTableQuery.cs
- WinInetCache.cs
- SurrogateEncoder.cs
- ButtonAutomationPeer.cs
- _SafeNetHandles.cs
- WebPartMinimizeVerb.cs
- SqlConnectionStringBuilder.cs
- AdapterDictionary.cs
- TextBoxAutomationPeer.cs
- TimeZoneInfo.cs
- WebEventCodes.cs
- ContentType.cs
- DataColumnPropertyDescriptor.cs
- Model3D.cs