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
- DataGridItemCollection.cs
- _CacheStreams.cs
- ContainerParagraph.cs
- CollectionContainer.cs
- Compiler.cs
- WebDescriptionAttribute.cs
- Opcode.cs
- FaultCallbackWrapper.cs
- HashLookup.cs
- RadialGradientBrush.cs
- PowerEase.cs
- HttpServerProtocol.cs
- FilteredDataSetHelper.cs
- WebPartDescriptionCollection.cs
- BitmapEffectGroup.cs
- X509Utils.cs
- externdll.cs
- MatrixTransform3D.cs
- TransactionManager.cs
- FreeFormDesigner.cs
- HwndProxyElementProvider.cs
- PropertyToken.cs
- MatrixIndependentAnimationStorage.cs
- Privilege.cs
- WorkflowEnvironment.cs
- arclist.cs
- DoubleAnimationClockResource.cs
- TextSchema.cs
- WindowsGrip.cs
- ObjectViewQueryResultData.cs
- SymLanguageVendor.cs
- PtsContext.cs
- GifBitmapEncoder.cs
- Quaternion.cs
- GridItemProviderWrapper.cs
- RemotingServices.cs
- SettingsPropertyWrongTypeException.cs
- TreeBuilderBamlTranslator.cs
- XmlBoundElement.cs
- PcmConverter.cs
- METAHEADER.cs
- LogEntrySerialization.cs
- ListItemCollection.cs
- LayoutTable.cs
- CompilerHelpers.cs
- ComponentChangingEvent.cs
- Polygon.cs
- MonitorWrapper.cs
- TextStore.cs
- NameNode.cs
- DataBindingCollection.cs
- DataPagerFieldCommandEventArgs.cs
- ImageCollectionEditor.cs
- GregorianCalendarHelper.cs
- TdsParameterSetter.cs
- SocketInformation.cs
- Brush.cs
- ContentFilePart.cs
- InputScopeManager.cs
- ConcurrentStack.cs
- EdmProviderManifest.cs
- XmlAnyElementAttributes.cs
- PanelStyle.cs
- IIS7UserPrincipal.cs
- EUCJPEncoding.cs
- WindowsScrollBarBits.cs
- DataColumn.cs
- HashLookup.cs
- AppDomainAttributes.cs
- WorkflowMarkupSerializerMapping.cs
- ToolStripLocationCancelEventArgs.cs
- SingleObjectCollection.cs
- DATA_BLOB.cs
- DatagridviewDisplayedBandsData.cs
- SqlFormatter.cs
- DeobfuscatingStream.cs
- ComponentEvent.cs
- TextEditorContextMenu.cs
- DataViewSetting.cs
- Brush.cs
- Asn1Utilities.cs
- _SecureChannel.cs
- HostExecutionContextManager.cs
- SpellerStatusTable.cs
- MbpInfo.cs
- SQLResource.cs
- InitializerFacet.cs
- XmlToDatasetMap.cs
- InvalidOleVariantTypeException.cs
- FlatButtonAppearance.cs
- HtmlImage.cs
- ConfigurationSection.cs
- DesignBindingPropertyDescriptor.cs
- Pen.cs
- DBDataPermission.cs
- KeyToListMap.cs
- SqlBooleanizer.cs
- HttpHandler.cs
- CodeNamespaceImportCollection.cs
- ISFClipboardData.cs