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
- UrlAuthFailedErrorFormatter.cs
- HttpApplication.cs
- EventRouteFactory.cs
- DynamicHyperLink.cs
- PersistChildrenAttribute.cs
- LazyLoadBehavior.cs
- BitmapCodecInfo.cs
- NetNamedPipeBinding.cs
- PropertyGroupDescription.cs
- XmlStreamNodeWriter.cs
- Style.cs
- JournalEntryListConverter.cs
- SafeTimerHandle.cs
- HttpContextWrapper.cs
- OleDbSchemaGuid.cs
- TextElement.cs
- FileDialogCustomPlace.cs
- PostBackOptions.cs
- GenericAuthenticationEventArgs.cs
- BindingValueChangedEventArgs.cs
- InternalReceiveMessage.cs
- ToolbarAUtomationPeer.cs
- SqlBulkCopyColumnMapping.cs
- PublishLicense.cs
- TextEditorSpelling.cs
- NavigationCommands.cs
- StreamAsIStream.cs
- ActiveXSite.cs
- MultiBindingExpression.cs
- Root.cs
- BaseTemplateBuildProvider.cs
- EventPropertyMap.cs
- CompiledXpathExpr.cs
- BitmapEffectState.cs
- Predicate.cs
- UIElementIsland.cs
- _ContextAwareResult.cs
- Matrix3DConverter.cs
- StylesEditorDialog.cs
- ThicknessKeyFrameCollection.cs
- SortFieldComparer.cs
- InlinedAggregationOperator.cs
- RTLAwareMessageBox.cs
- ZipArchive.cs
- KerberosRequestorSecurityToken.cs
- pingexception.cs
- StrokeIntersection.cs
- StylusPointPropertyInfo.cs
- PolyBezierSegment.cs
- LinqDataView.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- DocumentGrid.cs
- ConstantSlot.cs
- SystemTcpConnection.cs
- CompositeDataBoundControl.cs
- References.cs
- CultureInfoConverter.cs
- ConnectionProviderAttribute.cs
- LocationChangedEventArgs.cs
- ClientConvert.cs
- HttpContext.cs
- DetailsViewRow.cs
- DocumentPage.cs
- ThicknessAnimationUsingKeyFrames.cs
- InkCollectionBehavior.cs
- PublisherIdentityPermission.cs
- SafeEventHandle.cs
- ParentUndoUnit.cs
- RegistryConfigurationProvider.cs
- InstanceCollisionException.cs
- PaintValueEventArgs.cs
- AssemblyEvidenceFactory.cs
- XmlUTF8TextReader.cs
- Polyline.cs
- ThreadInterruptedException.cs
- DesignerVerb.cs
- AssemblyNameUtility.cs
- TextTreePropertyUndoUnit.cs
- DataGridColumnCollection.cs
- XmlChildNodes.cs
- InstanceDescriptor.cs
- ObjectSpanRewriter.cs
- Package.cs
- CustomWebEventKey.cs
- BufferedOutputAsyncStream.cs
- SimpleTypeResolver.cs
- PackWebRequest.cs
- AssemblyNameProxy.cs
- XmlDataSourceNodeDescriptor.cs
- EmbeddedMailObject.cs
- MenuItemStyleCollection.cs
- DataGridViewComboBoxColumn.cs
- CngUIPolicy.cs
- ForceCopyBuildProvider.cs
- EngineSiteSapi.cs
- MenuBase.cs
- XslAstAnalyzer.cs
- MobileUserControl.cs
- OdbcConnectionOpen.cs
- MetadataArtifactLoaderCompositeResource.cs