Code:
/ DotNET / DotNET / 8.0 / untmp / Orcas / RTM / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Imaging.cs
- SessionIDManager.cs
- DetailsViewDeleteEventArgs.cs
- TextEditorCharacters.cs
- ExpressionValueEditor.cs
- NetworkStream.cs
- XomlCompilerHelpers.cs
- Point3DCollectionValueSerializer.cs
- HostSecurityManager.cs
- RectangleConverter.cs
- CardSpaceException.cs
- FixedPageAutomationPeer.cs
- ColumnMapVisitor.cs
- InvokeGenerator.cs
- CodeMemberEvent.cs
- SafeMemoryMappedViewHandle.cs
- Zone.cs
- sqlcontext.cs
- SQLDateTimeStorage.cs
- UdpChannelFactory.cs
- DataServiceKeyAttribute.cs
- SelectionItemProviderWrapper.cs
- XPathBuilder.cs
- Scene3D.cs
- DBConcurrencyException.cs
- DateTimeOffsetStorage.cs
- TcpSocketManager.cs
- DesignerTextWriter.cs
- DbProviderFactory.cs
- WebMessageEncodingBindingElement.cs
- BaseCAMarshaler.cs
- ObjectList.cs
- ScaleTransform3D.cs
- ByteFacetDescriptionElement.cs
- SplashScreenNativeMethods.cs
- InputMethodStateTypeInfo.cs
- Error.cs
- PanelStyle.cs
- GeneralTransform2DTo3D.cs
- Claim.cs
- WorkflowApplication.cs
- ObfuscateAssemblyAttribute.cs
- BrowserDefinition.cs
- NoPersistProperty.cs
- DocumentationServerProtocol.cs
- RequestNavigateEventArgs.cs
- XmlDocumentFragment.cs
- ResourceDefaultValueAttribute.cs
- WsatServiceCertificate.cs
- HttpCookiesSection.cs
- PolicyDesigner.cs
- RecommendedAsConfigurableAttribute.cs
- FlagsAttribute.cs
- CachedPathData.cs
- Color.cs
- XmlTextEncoder.cs
- DelimitedListTraceListener.cs
- CommonDialog.cs
- DataViewSettingCollection.cs
- ProviderBase.cs
- StringSource.cs
- SID.cs
- safex509handles.cs
- ProofTokenCryptoHandle.cs
- CacheMemory.cs
- _OverlappedAsyncResult.cs
- HandlerBase.cs
- FailedToStartupUIException.cs
- SqlConnectionPoolProviderInfo.cs
- DragCompletedEventArgs.cs
- XmlResolver.cs
- DataPagerFieldCommandEventArgs.cs
- HostedImpersonationContext.cs
- AnnotationStore.cs
- NativeMethods.cs
- CodeObject.cs
- SoapReflectionImporter.cs
- CodeTypeParameterCollection.cs
- OutputCacheProfileCollection.cs
- TraceSource.cs
- ConfigurationSchemaErrors.cs
- PolyQuadraticBezierSegment.cs
- DSASignatureDeformatter.cs
- RequestQueryParser.cs
- ToolStripGripRenderEventArgs.cs
- EmissiveMaterial.cs
- EmptyReadOnlyDictionaryInternal.cs
- HwndSubclass.cs
- WorkflowInlining.cs
- SingleStorage.cs
- PathGradientBrush.cs
- Sql8ExpressionRewriter.cs
- ParameterModifier.cs
- HostedHttpContext.cs
- TreeBuilderBamlTranslator.cs
- DataReaderContainer.cs
- ScrollData.cs
- SkinBuilder.cs
- Hex.cs
- DatePickerAutomationPeer.cs