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
- XmlObjectSerializerWriteContextComplexJson.cs
- GeometryModel3D.cs
- ReadOnlyDataSource.cs
- SmtpNegotiateAuthenticationModule.cs
- DataViewManager.cs
- DesigntimeLicenseContext.cs
- Win32.cs
- Int32CAMarshaler.cs
- DataGridDesigner.cs
- DocumentApplication.cs
- IDataContractSurrogate.cs
- BitmapEffect.cs
- Menu.cs
- DataServiceConfiguration.cs
- ProxyManager.cs
- AppliedDeviceFiltersDialog.cs
- ProxyWebPartConnectionCollection.cs
- MsmqInputSessionChannelListener.cs
- StorageComplexPropertyMapping.cs
- XpsSerializationManagerAsync.cs
- StandardOleMarshalObject.cs
- ColorConvertedBitmapExtension.cs
- StagingAreaInputItem.cs
- RootAction.cs
- ValidationErrorCollection.cs
- FirstMatchCodeGroup.cs
- DataColumnSelectionConverter.cs
- TextParagraphCache.cs
- _FixedSizeReader.cs
- TypeDependencyAttribute.cs
- MessageSmuggler.cs
- ThreadInterruptedException.cs
- SweepDirectionValidation.cs
- UnaryOperationBinder.cs
- SQLBinaryStorage.cs
- ArraySet.cs
- SqlProfileProvider.cs
- CodeCompiler.cs
- OperationCanceledException.cs
- UmAlQuraCalendar.cs
- MdImport.cs
- FixedStringLookup.cs
- RouteParameter.cs
- DataGridViewHeaderCell.cs
- ProfessionalColorTable.cs
- ThaiBuddhistCalendar.cs
- XmlDictionaryReaderQuotas.cs
- BinaryFormatter.cs
- EdmFunction.cs
- PeerDefaultCustomResolverClient.cs
- Stack.cs
- PathFigureCollection.cs
- SpellerInterop.cs
- DefaultExpression.cs
- TemplatePartAttribute.cs
- AttributeXamlType.cs
- ProfileProvider.cs
- XmlStreamedByteStreamReader.cs
- BoundingRectTracker.cs
- IHttpResponseInternal.cs
- PagerStyle.cs
- HotSpotCollection.cs
- CompositeCollection.cs
- UnsafeNativeMethodsMilCoreApi.cs
- UriSection.cs
- FacetChecker.cs
- ValidationPropertyAttribute.cs
- DependencyPropertyKey.cs
- HttpCookiesSection.cs
- FileNotFoundException.cs
- ImageBrush.cs
- ScrollEventArgs.cs
- TemplateParser.cs
- CodeStatement.cs
- updateconfighost.cs
- TextAnchor.cs
- ExceptionUtility.cs
- EnumDataContract.cs
- TextDocumentView.cs
- SiteMapNodeItemEventArgs.cs
- VoiceSynthesis.cs
- AttributeTable.cs
- X509ClientCertificateAuthentication.cs
- RecordManager.cs
- TabletCollection.cs
- UserControl.cs
- ScriptReferenceEventArgs.cs
- OletxResourceManager.cs
- SQLDateTimeStorage.cs
- LabelAutomationPeer.cs
- BaseProcessor.cs
- OrderablePartitioner.cs
- ScriptControlDescriptor.cs
- PasswordTextNavigator.cs
- TypeResolver.cs
- NameValuePermission.cs
- ConfigurationLocationCollection.cs
- ValidationEventArgs.cs
- JoinGraph.cs
- wmiprovider.cs