Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / Script / Services / ScriptHandlerFactory.cs / 1305376 / ScriptHandlerFactory.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System.Web.SessionState; using System.Security.Permissions; using System.Security; 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(); } [SecuritySafeCritical] 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
- BatchWriter.cs
- ToolStripLocationCancelEventArgs.cs
- ImageAutomationPeer.cs
- FormatVersion.cs
- TabControlCancelEvent.cs
- Overlapped.cs
- assemblycache.cs
- TextChange.cs
- ThicknessAnimation.cs
- TextServicesDisplayAttributePropertyRanges.cs
- TypeDescriptionProviderAttribute.cs
- ExceptQueryOperator.cs
- CultureSpecificStringDictionary.cs
- EncryptedPackage.cs
- Point3D.cs
- SmtpFailedRecipientException.cs
- EventBookmark.cs
- XmlTextEncoder.cs
- ScaleTransform.cs
- SAPIEngineTypes.cs
- Geometry.cs
- _LocalDataStore.cs
- FileLoadException.cs
- StdValidatorsAndConverters.cs
- sqlnorm.cs
- CngAlgorithm.cs
- ItemCollection.cs
- SettingsPropertyIsReadOnlyException.cs
- CollectionChangedEventManager.cs
- TransactionFilter.cs
- QuadraticBezierSegment.cs
- ConfigUtil.cs
- ApplicationBuildProvider.cs
- Repeater.cs
- DataAdapter.cs
- GeneralTransform.cs
- UIElementAutomationPeer.cs
- StoreAnnotationsMap.cs
- FramingDecoders.cs
- BoolExpression.cs
- WmlLinkAdapter.cs
- CachedPathData.cs
- DecoderFallbackWithFailureFlag.cs
- ClrPerspective.cs
- DBConnection.cs
- WindowsImpersonationContext.cs
- WebBrowserProgressChangedEventHandler.cs
- AutomationEvent.cs
- SqlConnectionFactory.cs
- ReadOnlyDataSourceView.cs
- TripleDES.cs
- PersonalizationEntry.cs
- ThreadPool.cs
- VirtualStackFrame.cs
- FormViewPagerRow.cs
- SafeNativeMethods.cs
- TableRow.cs
- CompoundFileStreamReference.cs
- RichListBox.cs
- Vector3D.cs
- TransactionScope.cs
- CacheMemory.cs
- IssuedTokenClientCredential.cs
- HandlerFactoryCache.cs
- KeyValuePair.cs
- URLIdentityPermission.cs
- AttributeUsageAttribute.cs
- TextCharacters.cs
- Msec.cs
- FixedHighlight.cs
- x509utils.cs
- DeobfuscatingStream.cs
- SoapClientMessage.cs
- Canvas.cs
- ResolveCriteria11.cs
- ComponentCommands.cs
- XPathNavigatorReader.cs
- UrlMappingsModule.cs
- GridViewSelectEventArgs.cs
- UniqueTransportManagerRegistration.cs
- ConfigurationManagerInternal.cs
- DesignerActionUIStateChangeEventArgs.cs
- ScrollPattern.cs
- Simplifier.cs
- PathSegmentCollection.cs
- StreamResourceInfo.cs
- Form.cs
- IgnoreSectionHandler.cs
- Rss20ItemFormatter.cs
- FlowDocumentReaderAutomationPeer.cs
- FileDialogCustomPlacesCollection.cs
- LocalIdCollection.cs
- DataSet.cs
- TimelineClockCollection.cs
- ISAPIWorkerRequest.cs
- MediaPlayerState.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- Scheduler.cs
- sqlpipe.cs
- CheckBoxAutomationPeer.cs