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
- MessageSmuggler.cs
- MergeFilterQuery.cs
- MobileCapabilities.cs
- EventLogPermission.cs
- ProcessInputEventArgs.cs
- DataGridPageChangedEventArgs.cs
- SQLMoneyStorage.cs
- MLangCodePageEncoding.cs
- CaseInsensitiveOrdinalStringComparer.cs
- NamespaceInfo.cs
- PublisherMembershipCondition.cs
- TypeSource.cs
- WorkflowRuntimeEndpoint.cs
- CipherData.cs
- KeyTimeConverter.cs
- RewritingSimplifier.cs
- AddressHeader.cs
- Menu.cs
- OutputCacheProfile.cs
- StreamInfo.cs
- DotExpr.cs
- WindowAutomationPeer.cs
- PermissionRequestEvidence.cs
- FlowDocumentReader.cs
- SmtpMail.cs
- BitmapEffectGroup.cs
- DeflateInput.cs
- LinearKeyFrames.cs
- SqlInternalConnection.cs
- QilTargetType.cs
- Matrix3D.cs
- PropertyChangedEventManager.cs
- CqlParser.cs
- PropertyMetadata.cs
- HttpFileCollection.cs
- FormsAuthenticationEventArgs.cs
- DataGridViewCellParsingEventArgs.cs
- KnownColorTable.cs
- QualificationDataAttribute.cs
- QueryOptionExpression.cs
- Frame.cs
- EdmToObjectNamespaceMap.cs
- LinearKeyFrames.cs
- RoutedEventConverter.cs
- ConnectorDragDropGlyph.cs
- SizeAnimationClockResource.cs
- _LocalDataStoreMgr.cs
- Trace.cs
- ImageIndexEditor.cs
- TraceListeners.cs
- _TimerThread.cs
- OciEnlistContext.cs
- RawUIStateInputReport.cs
- Partitioner.cs
- UICuesEvent.cs
- WebPartCloseVerb.cs
- MetabaseSettingsIis7.cs
- DataObject.cs
- XmlQueryType.cs
- UriParserTemplates.cs
- ControlBuilder.cs
- SecurityTokenReferenceStyle.cs
- StringUtil.cs
- WebContentFormatHelper.cs
- X509Utils.cs
- TimeManager.cs
- ImageMetadata.cs
- MonthCalendar.cs
- EtwTrace.cs
- WorkflowApplicationTerminatedException.cs
- PropVariant.cs
- Parser.cs
- DataGrid.cs
- Operator.cs
- SmtpTransport.cs
- HwndTarget.cs
- SmtpNegotiateAuthenticationModule.cs
- PenThreadWorker.cs
- XsdCachingReader.cs
- SortKey.cs
- smtpconnection.cs
- EntityDataSourceStatementEditorForm.cs
- DataPagerFieldItem.cs
- CredentialSelector.cs
- WorkflowRuntimeElement.cs
- InheritanceContextHelper.cs
- FileSecurity.cs
- RegistrySecurity.cs
- EntityContainerEntitySet.cs
- Selection.cs
- BaseComponentEditor.cs
- RawStylusActions.cs
- WindowsSysHeader.cs
- ForwardPositionQuery.cs
- TranslateTransform3D.cs
- RangeValuePattern.cs
- RemotingConfigParser.cs
- TdsParserStateObject.cs
- OracleCommand.cs
- ProfileService.cs