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
- SourceSwitch.cs
- AdPostCacheSubstitution.cs
- InvalidFilterCriteriaException.cs
- GradientStop.cs
- DynamicEndpointElement.cs
- DbDataRecord.cs
- QuadraticBezierSegment.cs
- EncodingInfo.cs
- XmlIlTypeHelper.cs
- SQLInt16Storage.cs
- HMACRIPEMD160.cs
- CompareValidator.cs
- Splitter.cs
- DrawingBrush.cs
- ExceptionUtil.cs
- LinkedResource.cs
- SqlDeflator.cs
- RijndaelManagedTransform.cs
- EventListener.cs
- XmlElement.cs
- ByteStream.cs
- IdnMapping.cs
- DataGridViewLayoutData.cs
- TextAdaptor.cs
- ClipboardProcessor.cs
- VariableQuery.cs
- FileEnumerator.cs
- EntityDataSourceSelectedEventArgs.cs
- InvokeGenerator.cs
- DiscoveryDefaults.cs
- PropertyTab.cs
- ConfigsHelper.cs
- Frame.cs
- VisualStyleInformation.cs
- ReaderOutput.cs
- EntryWrittenEventArgs.cs
- SqlNodeAnnotation.cs
- WindowsPrincipal.cs
- ExtenderProvidedPropertyAttribute.cs
- X509Utils.cs
- XmlRawWriter.cs
- UnaryQueryOperator.cs
- Win32SafeHandles.cs
- BuildResultCache.cs
- FormsAuthenticationConfiguration.cs
- ApplicationSecurityInfo.cs
- XPathDocument.cs
- SessionPageStatePersister.cs
- EncodingTable.cs
- ILGen.cs
- RsaKeyIdentifierClause.cs
- MergeFailedEvent.cs
- BoundColumn.cs
- CanonicalFormWriter.cs
- DrawingImage.cs
- QueryStringParameter.cs
- IndentedTextWriter.cs
- ScriptReference.cs
- ActivityTypeCodeDomSerializer.cs
- UrlPath.cs
- WindowsRichEdit.cs
- ServiceModelPerformanceCounters.cs
- Main.cs
- SqlNodeAnnotations.cs
- ToolStripManager.cs
- SystemIcmpV4Statistics.cs
- FirstQueryOperator.cs
- TraceSection.cs
- MimeMapping.cs
- DesignTimeDataBinding.cs
- SaveCardRequest.cs
- ErrorTableItemStyle.cs
- InputElement.cs
- ExpressionNode.cs
- recordstate.cs
- OrderingExpression.cs
- TextTreePropertyUndoUnit.cs
- XmlMembersMapping.cs
- RTLAwareMessageBox.cs
- QualifiedCellIdBoolean.cs
- RSAOAEPKeyExchangeFormatter.cs
- FacetChecker.cs
- InfiniteIntConverter.cs
- Propagator.JoinPropagator.cs
- IndependentlyAnimatedPropertyMetadata.cs
- DialogWindow.cs
- BCryptNative.cs
- SqlProfileProvider.cs
- NavigationProgressEventArgs.cs
- PropertyDescriptor.cs
- PathNode.cs
- AttachmentCollection.cs
- ResourceCategoryAttribute.cs
- URLIdentityPermission.cs
- PenThreadWorker.cs
- DesignerForm.cs
- XmlnsPrefixAttribute.cs
- DBCommand.cs
- ManipulationLogic.cs
- OutOfProcStateClientManager.cs