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
- SharedDp.cs
- DocumentCollection.cs
- InstanceKeyView.cs
- TimeoutTimer.cs
- NameTable.cs
- CultureTable.cs
- AutoGeneratedFieldProperties.cs
- ValidationSummary.cs
- SplineKeyFrames.cs
- TitleStyle.cs
- NavigationProperty.cs
- ToolBarButtonClickEvent.cs
- WebBrowser.cs
- DictionaryBase.cs
- RequestValidator.cs
- followingquery.cs
- ServicesUtilities.cs
- Image.cs
- MeasurementDCInfo.cs
- FileDialog.cs
- InputReport.cs
- CharEntityEncoderFallback.cs
- PlanCompiler.cs
- XdrBuilder.cs
- DummyDataSource.cs
- EditorZone.cs
- MinimizableAttributeTypeConverter.cs
- PowerStatus.cs
- AccessViolationException.cs
- ApplicationCommands.cs
- FontWeights.cs
- Hash.cs
- AuthorizationContext.cs
- SortExpressionBuilder.cs
- Monitor.cs
- Crc32.cs
- DiscreteKeyFrames.cs
- SelectionEditor.cs
- DeleteHelper.cs
- DataList.cs
- DefaultMemberAttribute.cs
- X509SecurityTokenAuthenticator.cs
- CardSpaceException.cs
- StreamWriter.cs
- SQlBooleanStorage.cs
- SettingsSection.cs
- Composition.cs
- RangeValueProviderWrapper.cs
- ChangeConflicts.cs
- CompositeActivityMarkupSerializer.cs
- DocumentApplicationJournalEntryEventArgs.cs
- TextParaClient.cs
- SoapSchemaMember.cs
- TraceFilter.cs
- IndicFontClient.cs
- TreeNodeCollection.cs
- ValidationEventArgs.cs
- Padding.cs
- updatecommandorderer.cs
- SmiContext.cs
- BaseCodePageEncoding.cs
- UpdatePanelTriggerCollection.cs
- PngBitmapEncoder.cs
- SamlSubject.cs
- PropertyValueChangedEvent.cs
- UrlMapping.cs
- IndexOutOfRangeException.cs
- RowTypePropertyElement.cs
- DataGridViewRow.cs
- Rotation3D.cs
- SqlParameterCollection.cs
- SamlSecurityToken.cs
- Environment.cs
- MeasureItemEvent.cs
- HttpListenerRequest.cs
- TreeViewImageIndexConverter.cs
- WindowsIdentity.cs
- TempFiles.cs
- ISAPIRuntime.cs
- ExpressionNormalizer.cs
- XsltOutput.cs
- FreezableDefaultValueFactory.cs
- DataTableNewRowEvent.cs
- objectresult_tresulttype.cs
- StringFormat.cs
- KeyGestureConverter.cs
- JsonWriter.cs
- _NegotiateClient.cs
- AnonymousIdentificationSection.cs
- PrtCap_Base.cs
- DataGridViewRowsRemovedEventArgs.cs
- PeerCollaborationPermission.cs
- SHA1Managed.cs
- DefaultSection.cs
- SafeArchiveContext.cs
- PopupControlService.cs
- PointUtil.cs
- DesignTimeXamlWriter.cs
- TypeDependencyAttribute.cs
- SafeLocalMemHandle.cs