Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / xsp / System / Web / Extensions / Script / Services / ScriptHandlerFactory.cs / 1 / ScriptHandlerFactory.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System.Web.SessionState; namespace System.Web.Script.Services { internal class ScriptHandlerFactory : IHttpHandlerFactory { IHttpHandlerFactory _restHandlerFactory; IHttpHandlerFactory _webServiceHandlerFactory; internal class HandlerWrapper : IHttpHandler { protected IHttpHandler _originalHandler; private IHttpHandlerFactory _originalFactory; internal HandlerWrapper(IHttpHandler originalHandler, IHttpHandlerFactory originalFactory) { _originalFactory = originalFactory; _originalHandler = originalHandler; } internal void ReleaseHandler() { _originalFactory.ReleaseHandler(_originalHandler); } public bool IsReusable { get { return _originalHandler.IsReusable; } } public void ProcessRequest(HttpContext context) { _originalHandler.ProcessRequest(context); } } internal class HandlerWrapperWithSession : HandlerWrapper, IRequiresSessionState { internal HandlerWrapperWithSession(IHttpHandler originalHandler, IHttpHandlerFactory originalFactory) : base(originalHandler, originalFactory) {} } private class AsyncHandlerWrapper : HandlerWrapper, IHttpAsyncHandler { internal AsyncHandlerWrapper(IHttpHandler originalHandler, IHttpHandlerFactory originalFactory) : base(originalHandler, originalFactory) { } public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData) { return ((IHttpAsyncHandler)_originalHandler).BeginProcessRequest(context, cb, extraData); } public void EndProcessRequest(IAsyncResult result) { ((IHttpAsyncHandler)_originalHandler).EndProcessRequest(result); } } private class AsyncHandlerWrapperWithSession : AsyncHandlerWrapper, IRequiresSessionState { internal AsyncHandlerWrapperWithSession(IHttpHandler originalHandler, IHttpHandlerFactory originalFactory) : base(originalHandler, originalFactory) { } } public ScriptHandlerFactory() { _restHandlerFactory = new RestHandlerFactory(); _webServiceHandlerFactory = new System.Web.Services.Protocols.WebServiceHandlerFactory(); } public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated) { IHttpHandler handler; IHttpHandlerFactory factory; if (RestHandlerFactory.IsRestRequest(context)) { // It's a REST request factory = _restHandlerFactory; } else { // It's a regular asmx web request, so delegate to the WebServiceHandlerFactory factory = _webServiceHandlerFactory; } handler = factory.GetHandler(context, requestType, url, pathTranslated); bool requiresSession = handler is IRequiresSessionState; if (handler is IHttpAsyncHandler) { if (requiresSession) return new AsyncHandlerWrapperWithSession(handler, factory); else return new AsyncHandlerWrapper(handler, factory); } if (requiresSession) return new HandlerWrapperWithSession(handler, factory); else return new HandlerWrapper(handler, factory); } public virtual void ReleaseHandler(IHttpHandler handler) { if (handler == null) { throw new ArgumentNullException("handler"); } ((HandlerWrapper)handler).ReleaseHandler(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System.Web.SessionState; namespace System.Web.Script.Services { internal class ScriptHandlerFactory : IHttpHandlerFactory { IHttpHandlerFactory _restHandlerFactory; IHttpHandlerFactory _webServiceHandlerFactory; internal class HandlerWrapper : IHttpHandler { protected IHttpHandler _originalHandler; private IHttpHandlerFactory _originalFactory; internal HandlerWrapper(IHttpHandler originalHandler, IHttpHandlerFactory originalFactory) { _originalFactory = originalFactory; _originalHandler = originalHandler; } internal void ReleaseHandler() { _originalFactory.ReleaseHandler(_originalHandler); } public bool IsReusable { get { return _originalHandler.IsReusable; } } public void ProcessRequest(HttpContext context) { _originalHandler.ProcessRequest(context); } } internal class HandlerWrapperWithSession : HandlerWrapper, IRequiresSessionState { internal HandlerWrapperWithSession(IHttpHandler originalHandler, IHttpHandlerFactory originalFactory) : base(originalHandler, originalFactory) {} } private class AsyncHandlerWrapper : HandlerWrapper, IHttpAsyncHandler { internal AsyncHandlerWrapper(IHttpHandler originalHandler, IHttpHandlerFactory originalFactory) : base(originalHandler, originalFactory) { } public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData) { return ((IHttpAsyncHandler)_originalHandler).BeginProcessRequest(context, cb, extraData); } public void EndProcessRequest(IAsyncResult result) { ((IHttpAsyncHandler)_originalHandler).EndProcessRequest(result); } } private class AsyncHandlerWrapperWithSession : AsyncHandlerWrapper, IRequiresSessionState { internal AsyncHandlerWrapperWithSession(IHttpHandler originalHandler, IHttpHandlerFactory originalFactory) : base(originalHandler, originalFactory) { } } public ScriptHandlerFactory() { _restHandlerFactory = new RestHandlerFactory(); _webServiceHandlerFactory = new System.Web.Services.Protocols.WebServiceHandlerFactory(); } public virtual IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated) { IHttpHandler handler; IHttpHandlerFactory factory; if (RestHandlerFactory.IsRestRequest(context)) { // It's a REST request factory = _restHandlerFactory; } else { // It's a regular asmx web request, so delegate to the WebServiceHandlerFactory factory = _webServiceHandlerFactory; } handler = factory.GetHandler(context, requestType, url, pathTranslated); bool requiresSession = handler is IRequiresSessionState; if (handler is IHttpAsyncHandler) { if (requiresSession) return new AsyncHandlerWrapperWithSession(handler, factory); else return new AsyncHandlerWrapper(handler, factory); } if (requiresSession) return new HandlerWrapperWithSession(handler, factory); else return new HandlerWrapper(handler, factory); } public virtual void ReleaseHandler(IHttpHandler handler) { if (handler == null) { throw new ArgumentNullException("handler"); } ((HandlerWrapper)handler).ReleaseHandler(); } } } // 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
- NativeMethods.cs
- EventData.cs
- contentDescriptor.cs
- InvalidWMPVersionException.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- PersonalizationAdministration.cs
- ToolboxComponentsCreatedEventArgs.cs
- MonthChangedEventArgs.cs
- Transform3D.cs
- figurelengthconverter.cs
- Utils.cs
- ObfuscateAssemblyAttribute.cs
- BackStopAuthenticationModule.cs
- UnsafeNativeMethods.cs
- FormatConvertedBitmap.cs
- EntityUtil.cs
- ConfigXmlSignificantWhitespace.cs
- ProbeMatchesCD1.cs
- IncrementalReadDecoders.cs
- MetadataCacheItem.cs
- ApplicationBuildProvider.cs
- InternalTypeHelper.cs
- Screen.cs
- PasswordDeriveBytes.cs
- XmlBaseWriter.cs
- SynchronizationHandlesCodeDomSerializer.cs
- ButtonFlatAdapter.cs
- WindowsListViewGroupHelper.cs
- WebBrowserNavigatingEventHandler.cs
- OleAutBinder.cs
- NavigationPropertyAccessor.cs
- TextElementAutomationPeer.cs
- NetNamedPipeSecurityElement.cs
- SliderAutomationPeer.cs
- Misc.cs
- DictionarySectionHandler.cs
- XmlSchemaException.cs
- ManifestResourceInfo.cs
- MultiView.cs
- AnnotationComponentManager.cs
- DataGridViewButtonCell.cs
- QueryFunctions.cs
- QuadraticBezierSegment.cs
- AutoResetEvent.cs
- FileDialog_Vista_Interop.cs
- CheckBoxPopupAdapter.cs
- BorderSidesEditor.cs
- DynamicPropertyHolder.cs
- Attribute.cs
- SchemaCollectionCompiler.cs
- InkCanvasAutomationPeer.cs
- ReachPageContentSerializerAsync.cs
- ApplicationSecurityManager.cs
- DropDownButton.cs
- PassportAuthenticationModule.cs
- ItemList.cs
- ViewStateModeByIdAttribute.cs
- TagNameToTypeMapper.cs
- GenericRootAutomationPeer.cs
- ComponentResourceManager.cs
- WSUtilitySpecificationVersion.cs
- HtmlInputControl.cs
- Stackframe.cs
- OptimalBreakSession.cs
- AspProxy.cs
- Converter.cs
- WrapPanel.cs
- CompilerError.cs
- CategoryAttribute.cs
- GenericTypeParameterBuilder.cs
- XmlElementAttributes.cs
- ComUdtElementCollection.cs
- StrokeIntersection.cs
- NativeMethods.cs
- ContextStaticAttribute.cs
- ButtonBaseDesigner.cs
- GacUtil.cs
- ServiceHostingEnvironment.cs
- FontSourceCollection.cs
- DeviceSpecificDialogCachedState.cs
- SmiEventSink.cs
- OciHandle.cs
- SqlCommandSet.cs
- CellLabel.cs
- ValidationSummary.cs
- SQLDecimal.cs
- MimeMultiPart.cs
- WhitespaceReader.cs
- OciLobLocator.cs
- DataRelation.cs
- MDIControlStrip.cs
- CompressEmulationStream.cs
- AddingNewEventArgs.cs
- FixedTextView.cs
- StructuredTypeEmitter.cs
- XmlSchemaComplexContentRestriction.cs
- ObjectStateManager.cs
- ValueCollectionParameterReader.cs
- WebPermission.cs
- DiscoveryClientOutputChannel.cs