Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- PartitionResolver.cs
- ValidationError.cs
- ObjectDataSourceDesigner.cs
- SharedConnectionWorkflowTransactionService.cs
- XmlWrappingWriter.cs
- EndpointBehaviorElementCollection.cs
- DataPagerField.cs
- BinaryUtilClasses.cs
- DBCommand.cs
- XmlILTrace.cs
- SerializationObjectManager.cs
- HostedTcpTransportManager.cs
- Stream.cs
- DocumentScope.cs
- WebBrowserNavigatingEventHandler.cs
- CompositionCommandSet.cs
- BitmapCodecInfoInternal.cs
- X509WindowsSecurityToken.cs
- XmlResolver.cs
- IFlowDocumentViewer.cs
- EnumerableCollectionView.cs
- UriSchemeKeyedCollection.cs
- StringPropertyBuilder.cs
- SmiGettersStream.cs
- ContainsRowNumberChecker.cs
- DesignerTransactionCloseEvent.cs
- Pts.cs
- SessionEndingCancelEventArgs.cs
- ProfileProvider.cs
- SymbolMethod.cs
- Switch.cs
- Util.cs
- HtmlUtf8RawTextWriter.cs
- GlobalItem.cs
- BitStack.cs
- Exception.cs
- ToolStripDropDown.cs
- BitmapPalette.cs
- SqlXml.cs
- Window.cs
- mediaeventargs.cs
- SelectionItemPattern.cs
- GeneralTransformCollection.cs
- ChangePasswordAutoFormat.cs
- TrackingLocation.cs
- TemplatedWizardStep.cs
- StateBag.cs
- EdmError.cs
- FixedSOMPageConstructor.cs
- ISessionStateStore.cs
- HashHelper.cs
- remotingproxy.cs
- PermissionSetTriple.cs
- ValidationErrorEventArgs.cs
- ThreadAbortException.cs
- SqlInternalConnection.cs
- RectangleHotSpot.cs
- ScriptResourceHandler.cs
- RegexBoyerMoore.cs
- MetabaseServerConfig.cs
- ImplicitInputBrush.cs
- HttpProfileBase.cs
- UserPersonalizationStateInfo.cs
- ResponseStream.cs
- WS2007HttpBinding.cs
- ImpersonateTokenRef.cs
- DocumentOrderQuery.cs
- BindingOperations.cs
- LinkGrep.cs
- UserCancellationException.cs
- BitmapEffectInputConnector.cs
- ListMarkerSourceInfo.cs
- SoapSchemaMember.cs
- Calendar.cs
- HashUtility.cs
- Connector.cs
- StretchValidation.cs
- WebErrorHandler.cs
- ScaleTransform3D.cs
- SafeSerializationManager.cs
- Message.cs
- HostSecurityManager.cs
- Visual3DCollection.cs
- InternalMappingException.cs
- SecurityElement.cs
- ScriptDescriptor.cs
- KoreanCalendar.cs
- HashMembershipCondition.cs
- TextServicesManager.cs
- PaintEvent.cs
- SecurityManager.cs
- TextSpanModifier.cs
- ParamArrayAttribute.cs
- TcpAppDomainProtocolHandler.cs
- MailAddress.cs
- SiteOfOriginPart.cs
- BuildManagerHost.cs
- PropertyGridCommands.cs
- PageWrapper.cs
- JournalEntry.cs