Code:
/ DotNET / DotNET / 8.0 / untmp / Orcas / RTM / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TableRow.cs
- XdrBuilder.cs
- TableLayout.cs
- RelationshipManager.cs
- XPathBinder.cs
- SafeUserTokenHandle.cs
- FormViewCommandEventArgs.cs
- WindowInteropHelper.cs
- DataGridViewSelectedCellCollection.cs
- SharedHttpsTransportManager.cs
- AuthenticationModuleElement.cs
- DrawingContextDrawingContextWalker.cs
- SchemaLookupTable.cs
- MethodRental.cs
- InheritablePropertyChangeInfo.cs
- Substitution.cs
- _HTTPDateParse.cs
- Transform.cs
- ComponentSerializationService.cs
- DataListCommandEventArgs.cs
- XsltArgumentList.cs
- UIElementHelper.cs
- URLString.cs
- HatchBrush.cs
- ToolTipAutomationPeer.cs
- DesignerLoader.cs
- Style.cs
- Decoder.cs
- WebPartUtil.cs
- AddressHeaderCollectionElement.cs
- HijriCalendar.cs
- ToolStripGripRenderEventArgs.cs
- EntityClassGenerator.cs
- StrokeRenderer.cs
- ReplacementText.cs
- UnsafeNativeMethods.cs
- PresentationTraceSources.cs
- URI.cs
- GridViewUpdatedEventArgs.cs
- LineInfo.cs
- Point.cs
- PnrpPermission.cs
- SQLSingleStorage.cs
- SpotLight.cs
- XmlReturnReader.cs
- InsufficientMemoryException.cs
- OrderByQueryOptionExpression.cs
- Graph.cs
- VSWCFServiceContractGenerator.cs
- PixelFormats.cs
- ImageMap.cs
- MutableAssemblyCacheEntry.cs
- ObjectQuery.cs
- DelegateTypeInfo.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- SmiTypedGetterSetter.cs
- SessionPageStatePersister.cs
- AssemblyFilter.cs
- TreeNode.cs
- CryptoApi.cs
- FrameworkContextData.cs
- ToolStripControlHost.cs
- LoginCancelEventArgs.cs
- DataSourceViewSchemaConverter.cs
- HttpConfigurationContext.cs
- ObjectQuery_EntitySqlExtensions.cs
- WebPartPersonalization.cs
- XmlMemberMapping.cs
- ManagedWndProcTracker.cs
- CookielessHelper.cs
- securitycriticaldataformultiplegetandset.cs
- HttpHeaderCollection.cs
- ColorKeyFrameCollection.cs
- MultiByteCodec.cs
- DmlSqlGenerator.cs
- ModelFunction.cs
- CryptoStream.cs
- XmlElementAttribute.cs
- StylusShape.cs
- DocumentXPathNavigator.cs
- ConstructorNeedsTagAttribute.cs
- SerializationFieldInfo.cs
- ClassHandlersStore.cs
- EnumUnknown.cs
- ProvidersHelper.cs
- DataSetMappper.cs
- SafeNativeMethods.cs
- Symbol.cs
- HtmlForm.cs
- MiniLockedBorderGlyph.cs
- XmlNullResolver.cs
- ParallelDesigner.cs
- TimeSpanParse.cs
- Soap12FormatExtensions.cs
- userdatakeys.cs
- Intellisense.cs
- WindowsFormsSynchronizationContext.cs
- GeometryModel3D.cs
- WorkflowCreationContext.cs
- WsdlContractConversionContext.cs