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
- UserControl.cs
- _SSPISessionCache.cs
- Predicate.cs
- XPathDocumentBuilder.cs
- IPHostEntry.cs
- EventSourceCreationData.cs
- DataSourceGroupCollection.cs
- RepeatBehaviorConverter.cs
- Error.cs
- MediaSystem.cs
- XmlHierarchicalEnumerable.cs
- DelegateSerializationHolder.cs
- SafeArrayRankMismatchException.cs
- SqlProviderManifest.cs
- KeyedHashAlgorithm.cs
- DesignerAttribute.cs
- EntityDataSourceDesignerHelper.cs
- IProducerConsumerCollection.cs
- DbConnectionHelper.cs
- basevalidator.cs
- ExceptionUtil.cs
- APCustomTypeDescriptor.cs
- FactoryGenerator.cs
- Opcode.cs
- TypeConverterAttribute.cs
- IdentityReference.cs
- SQLByteStorage.cs
- DataKeyCollection.cs
- MatcherBuilder.cs
- ClientTargetSection.cs
- MdImport.cs
- EdmPropertyAttribute.cs
- CalendarDataBindingHandler.cs
- ContentPathSegment.cs
- StringUtil.cs
- Pair.cs
- Menu.cs
- FontFaceLayoutInfo.cs
- Assembly.cs
- XmlNamespaceManager.cs
- SolidColorBrush.cs
- TdsParserStaticMethods.cs
- MetaChildrenColumn.cs
- EntitySqlQueryBuilder.cs
- GPPOINTF.cs
- Classification.cs
- ReliableReplySessionChannel.cs
- Interop.cs
- HistoryEventArgs.cs
- FieldDescriptor.cs
- KeyValueSerializer.cs
- XmlIncludeAttribute.cs
- OrderingQueryOperator.cs
- WinFormsComponentEditor.cs
- PngBitmapDecoder.cs
- ConstraintEnumerator.cs
- ImageButton.cs
- MDIControlStrip.cs
- MetafileHeader.cs
- TextEmbeddedObject.cs
- ConfigWriter.cs
- Properties.cs
- InputScope.cs
- GeneratedView.cs
- InvariantComparer.cs
- GlobalizationAssembly.cs
- EntityTypeEmitter.cs
- CollectionViewGroupRoot.cs
- GroupItem.cs
- DynamicActivity.cs
- _LocalDataStore.cs
- UnsafeNativeMethods.cs
- DiscoveryExceptionDictionary.cs
- WmlPageAdapter.cs
- Baml2006ReaderSettings.cs
- SerializerProvider.cs
- ClientRoleProvider.cs
- BrowsableAttribute.cs
- ISAPIWorkerRequest.cs
- ConversionHelper.cs
- PDBReader.cs
- TimelineGroup.cs
- ConfigurationStrings.cs
- DiagnosticTraceSource.cs
- Win32Native.cs
- FormsAuthenticationModule.cs
- BindingListCollectionView.cs
- Focus.cs
- DocumentPageView.cs
- HtmlValidationSummaryAdapter.cs
- Overlapped.cs
- DataGridViewHitTestInfo.cs
- MessageBox.cs
- StandardCommands.cs
- SqlFileStream.cs
- FileDocument.cs
- ContentControl.cs
- SequenceDesigner.cs
- WindowsEditBox.cs
- FreezableDefaultValueFactory.cs