Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / RunTime / Hosting / WorkflowWebHostingModule.cs / 1305376 / WorkflowWebHostingModule.cs
/******************************************************************************** // Copyright (C) 2000-2001 Microsoft Corporation. All rights reserved. // // CONTENTS // Workflow Web Hosting Module. // DESCRIPTION // Implementation of Workflow Web Host Module. // REVISIONS // Date Ver By Remarks // ~~~~~~~~~~ ~~~ ~~~~~~~~ ~~~~~~~~~~~~~~ // 02/22/05 1.0 [....] Implementation. * ****************************************************************************/ #region Using directives using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Web; using System.Collections.Specialized; using System.Threading; #endregion namespace System.Workflow.Runtime.Hosting { ////// Cookie based rotuing module implementation /// public sealed class WorkflowWebHostingModule : IHttpModule { HttpApplication currentApplication; public WorkflowWebHostingModule() { WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "Workflow Web Hosting Module Created"); } ////// IHttpModule.Init() /// /// void IHttpModule.Init(HttpApplication application) { WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "Workflow Web Hosting Module Initialized"); this.currentApplication = application; //Listen for Acquire and ReleaseRequestState event application.ReleaseRequestState += this.OnReleaseRequestState; application.AcquireRequestState += this.OnAcquireRequestState; } void IHttpModule.Dispose() { } void OnAcquireRequestState(Object sender, EventArgs e) { //Performs Cookie based routing. WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "WebHost Module Routing Begin"); HttpCookie routingCookie = HttpContext.Current.Request.Cookies.Get("WF_WorkflowInstanceId"); if (routingCookie != null) { HttpContext.Current.Items.Add("__WorkflowInstanceId__", new Guid(routingCookie.Value)); } //else no routing information found, it could be activation request or non workflow based request. } void OnReleaseRequestState(Object sender, EventArgs e) { //Saves cookie back to client. HttpCookie cookie = HttpContext.Current.Request.Cookies.Get("WF_WorkflowInstanceId"); if (cookie == null) { cookie = new HttpCookie("WF_WorkflowInstanceId"); Object workflowInstanceId = HttpContext.Current.Items["__WorkflowInstanceId__"]; if (workflowInstanceId != null) { cookie.Value = workflowInstanceId.ToString(); HttpContext.Current.Response.Cookies.Add(cookie); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. /******************************************************************************** // Copyright (C) 2000-2001 Microsoft Corporation. All rights reserved. // // CONTENTS // Workflow Web Hosting Module. // DESCRIPTION // Implementation of Workflow Web Host Module. // REVISIONS // Date Ver By Remarks // ~~~~~~~~~~ ~~~ ~~~~~~~~ ~~~~~~~~~~~~~~ // 02/22/05 1.0 [....] Implementation. * ****************************************************************************/ #region Using directives using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Web; using System.Collections.Specialized; using System.Threading; #endregion namespace System.Workflow.Runtime.Hosting { ////// Cookie based rotuing module implementation /// public sealed class WorkflowWebHostingModule : IHttpModule { HttpApplication currentApplication; public WorkflowWebHostingModule() { WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "Workflow Web Hosting Module Created"); } ////// IHttpModule.Init() /// /// void IHttpModule.Init(HttpApplication application) { WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "Workflow Web Hosting Module Initialized"); this.currentApplication = application; //Listen for Acquire and ReleaseRequestState event application.ReleaseRequestState += this.OnReleaseRequestState; application.AcquireRequestState += this.OnAcquireRequestState; } void IHttpModule.Dispose() { } void OnAcquireRequestState(Object sender, EventArgs e) { //Performs Cookie based routing. WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "WebHost Module Routing Begin"); HttpCookie routingCookie = HttpContext.Current.Request.Cookies.Get("WF_WorkflowInstanceId"); if (routingCookie != null) { HttpContext.Current.Items.Add("__WorkflowInstanceId__", new Guid(routingCookie.Value)); } //else no routing information found, it could be activation request or non workflow based request. } void OnReleaseRequestState(Object sender, EventArgs e) { //Saves cookie back to client. HttpCookie cookie = HttpContext.Current.Request.Cookies.Get("WF_WorkflowInstanceId"); if (cookie == null) { cookie = new HttpCookie("WF_WorkflowInstanceId"); Object workflowInstanceId = HttpContext.Current.Items["__WorkflowInstanceId__"]; if (workflowInstanceId != null) { cookie.Value = workflowInstanceId.ToString(); HttpContext.Current.Response.Cookies.Add(cookie); } } } } } // 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
- SurrogateDataContract.cs
- LayoutTable.cs
- BoundColumn.cs
- FormParameter.cs
- EqualityComparer.cs
- VectorKeyFrameCollection.cs
- SyndicationItemFormatter.cs
- BuildResult.cs
- ElementAtQueryOperator.cs
- RecordManager.cs
- EventLogTraceListener.cs
- Component.cs
- X509ChainElement.cs
- sqlstateclientmanager.cs
- XmlQualifiedName.cs
- XmlWrappingReader.cs
- RemotingHelper.cs
- MouseActionConverter.cs
- SizeChangedEventArgs.cs
- CompressedStack.cs
- MouseGestureValueSerializer.cs
- DataGridViewRowsRemovedEventArgs.cs
- OdbcEnvironmentHandle.cs
- diagnosticsswitches.cs
- HealthMonitoringSection.cs
- InkCanvasFeedbackAdorner.cs
- KnownTypes.cs
- DesignerToolboxInfo.cs
- Attachment.cs
- SchemaImporterExtension.cs
- ParameterBuilder.cs
- FlowDocumentReaderAutomationPeer.cs
- SystemThemeKey.cs
- StreamDocument.cs
- Geometry.cs
- EditorPart.cs
- WebPartEditVerb.cs
- XPathPatternBuilder.cs
- IntMinMaxAggregationOperator.cs
- MeasurementDCInfo.cs
- smtpconnection.cs
- CurrencyWrapper.cs
- XmlHierarchicalEnumerable.cs
- TextServicesManager.cs
- CodeAccessSecurityEngine.cs
- BitmapPalettes.cs
- DynamicResourceExtensionConverter.cs
- DBBindings.cs
- CacheEntry.cs
- Int32AnimationBase.cs
- HtmlButton.cs
- PersistenceTypeAttribute.cs
- SmiSettersStream.cs
- ManipulationDelta.cs
- ErrorEventArgs.cs
- MetadataCache.cs
- MarkedHighlightComponent.cs
- LineUtil.cs
- CreateBookmarkScope.cs
- IssuanceLicense.cs
- GacUtil.cs
- IPGlobalProperties.cs
- SamlNameIdentifierClaimResource.cs
- Propagator.cs
- EdmTypeAttribute.cs
- NodeInfo.cs
- JavaScriptObjectDeserializer.cs
- DelegatedStream.cs
- DbConnectionPoolGroup.cs
- SizeAnimationUsingKeyFrames.cs
- UnionExpr.cs
- BaseTemplateParser.cs
- DrawingBrush.cs
- LicenseProviderAttribute.cs
- ToolboxItemAttribute.cs
- Attribute.cs
- CodeTypeMember.cs
- WebZoneDesigner.cs
- XmlObjectSerializerWriteContextComplex.cs
- TraceEventCache.cs
- FormsAuthenticationTicket.cs
- OdbcConnectionOpen.cs
- TemplateApplicationHelper.cs
- ReflectionTypeLoadException.cs
- ToolStripGrip.cs
- ScriptingJsonSerializationSection.cs
- WebResponse.cs
- ScriptControl.cs
- CalendarAutoFormatDialog.cs
- smtpconnection.cs
- BamlResourceContent.cs
- ISFTagAndGuidCache.cs
- AutomationProperties.cs
- TreeViewAutomationPeer.cs
- Assert.cs
- NestedContainer.cs
- ReadWriteObjectLock.cs
- LayoutUtils.cs
- BitmapPalette.cs
- EntityTypeBase.cs