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
- UriScheme.cs
- PenThread.cs
- entityreference_tresulttype.cs
- DataGridViewTopRowAccessibleObject.cs
- XmlILIndex.cs
- TimeSpanFormat.cs
- ImageListUtils.cs
- SyndicationDeserializer.cs
- ServiceXNameTypeConverter.cs
- SymLanguageVendor.cs
- _CommandStream.cs
- WebSysDescriptionAttribute.cs
- XmlSchemaExporter.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- UndoManager.cs
- PermissionSet.cs
- SmiEventStream.cs
- ResourceDescriptionAttribute.cs
- HtmlInputControl.cs
- InitializingNewItemEventArgs.cs
- SoapSchemaImporter.cs
- DesignerTransaction.cs
- ClientBuildManager.cs
- WmlPanelAdapter.cs
- SystemException.cs
- RelatedPropertyManager.cs
- ArgumentNullException.cs
- TemplateNameScope.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- OdbcConnectionFactory.cs
- SqlReferenceCollection.cs
- ProxyElement.cs
- ColumnBinding.cs
- sqlpipe.cs
- x509store.cs
- TextServicesCompartmentEventSink.cs
- ToolStripArrowRenderEventArgs.cs
- CodeAssignStatement.cs
- IDispatchConstantAttribute.cs
- EventDescriptorCollection.cs
- ConsoleKeyInfo.cs
- ContextConfiguration.cs
- AccessText.cs
- WebPartDeleteVerb.cs
- Header.cs
- ResourceCategoryAttribute.cs
- GenericWebPart.cs
- MDIWindowDialog.cs
- FontFaceLayoutInfo.cs
- DataGridCheckBoxColumn.cs
- DataViewManagerListItemTypeDescriptor.cs
- X509CertificateCollection.cs
- AssertSection.cs
- GetLastErrorDetailsRequest.cs
- FirstMatchCodeGroup.cs
- ServiceBusyException.cs
- VisualStyleElement.cs
- SoapSchemaImporter.cs
- Renderer.cs
- ConfigurationStrings.cs
- DataGridToolTip.cs
- NamespaceDisplay.xaml.cs
- Util.cs
- UserControl.cs
- IListConverters.cs
- recordstate.cs
- IconHelper.cs
- XmlSortKey.cs
- SamlAttribute.cs
- Events.cs
- DataGridViewHeaderCell.cs
- EdmRelationshipRoleAttribute.cs
- InputBuffer.cs
- DebuggerAttributes.cs
- XmlNamespaceManager.cs
- PtsHelper.cs
- DataControlPagerLinkButton.cs
- SelectionListDesigner.cs
- StateDesigner.LayoutSelectionGlyph.cs
- FixedSOMLineRanges.cs
- ResetableIterator.cs
- OracleRowUpdatingEventArgs.cs
- MaskInputRejectedEventArgs.cs
- XmlBinaryWriter.cs
- CompiledELinqQueryState.cs
- DependencyPropertyKind.cs
- ConnectivityStatus.cs
- RangeEnumerable.cs
- LockCookie.cs
- PostBackTrigger.cs
- VectorConverter.cs
- TreeViewItemAutomationPeer.cs
- X509RawDataKeyIdentifierClause.cs
- Registry.cs
- Parameter.cs
- FontInfo.cs
- DictionaryTraceRecord.cs
- DynamicValueConverter.cs
- EntityChangedParams.cs
- CodeSubDirectoriesCollection.cs