Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / DefaultHttpHandler.cs / 1 / DefaultHttpHandler.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web { using System; using System.Collections; using System.Collections.Specialized; using System.Globalization; using System.Text; using System.Web.Util; using System.Security.Permissions; [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class DefaultHttpHandler : IHttpAsyncHandler { private HttpContext _context; private NameValueCollection _executeUrlHeaders; public DefaultHttpHandler() { } protected HttpContext Context { get { return _context; } } // headers to provide to execute url protected NameValueCollection ExecuteUrlHeaders { get { if (_executeUrlHeaders == null && _context != null) { _executeUrlHeaders = new NameValueCollection(_context.Request.Headers); } return _executeUrlHeaders; } } // called when we know a precondition for calling // execute URL has been violated public virtual void OnExecuteUrlPreconditionFailure() { // do nothing - the derived class might throw } // add a virtual method that provides the request target for the EXECUTE_URL call // if return null, the default calls EXECUTE_URL for the default target public virtual String OverrideExecuteUrlPath() { return null; } internal static bool IsClassicAspRequest(String filePath) { return StringUtil.StringEndsWithIgnoreCase(filePath, ".asp"); } public virtual IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) { _context = context; HttpResponse response = _context.Response; if (response.CanExecuteUrlForEntireResponse) { // use ExecuteUrl String path = OverrideExecuteUrlPath(); if (path != null && !HttpRuntime.IsFullTrust) { // validate that an untrusted derived classes (not in GAC) // didn't set the path to a place that CAS wouldn't let it access if (!this.GetType().Assembly.GlobalAssemblyCache) { HttpRuntime.CheckFilePermission(context.Request.MapPath(path)); } } return response.BeginExecuteUrlForEntireResponse(path, _executeUrlHeaders, callback, state); } else { // let the base class throw if it doesn't want static files handler OnExecuteUrlPreconditionFailure(); // use static file handler _context = null; // don't keep request data alive in sync case HttpRequest request = context.Request; // refuse POST requests if (request.HttpVerb == HttpVerb.POST) { throw new HttpException(405, SR.GetString(SR.Method_not_allowed, request.HttpMethod, request.Path)); } // refuse .asp requests if (IsClassicAspRequest(request.FilePath)) { throw new HttpException(403, SR.GetString(SR.Path_forbidden, request.Path)); } // default to static file handler StaticFileHandler.ProcessRequestInternal(context); // return async result indicating completion return new HttpAsyncResult(callback, state, true, null, null); } } public virtual void EndProcessRequest(IAsyncResult result) { if (_context != null) { HttpResponse response = _context.Response; _context = null; response.EndExecuteUrlForEntireResponse(result); } } public virtual void ProcessRequest(HttpContext context) { // this handler should never be called synchronously throw new InvalidOperationException(SR.GetString(SR.Cannot_call_defaulthttphandler_sync)); } public virtual bool IsReusable { get { return false; } } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EdmComplexTypeAttribute.cs
- BufferBuilder.cs
- ServerValidateEventArgs.cs
- OracleConnectionStringBuilder.cs
- BezierSegment.cs
- HttpException.cs
- BaseValidatorDesigner.cs
- StateWorkerRequest.cs
- UnsafeNativeMethods.cs
- NumberSubstitution.cs
- RangeValuePattern.cs
- RtfToXamlReader.cs
- OutputCacheProfileCollection.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- PersistencePipeline.cs
- _ServiceNameStore.cs
- WebPartUserCapability.cs
- Timeline.cs
- WebScriptServiceHostFactory.cs
- QueueProcessor.cs
- TypeExtensionSerializer.cs
- MediaSystem.cs
- InitializerFacet.cs
- DiscoveryClientProtocol.cs
- ComponentChangingEvent.cs
- Matrix3DStack.cs
- JsonGlobals.cs
- VerificationException.cs
- OverlappedAsyncResult.cs
- ControlBuilderAttribute.cs
- XmlElement.cs
- SmiRecordBuffer.cs
- DbBuffer.cs
- UnmanagedMemoryStreamWrapper.cs
- InteropExecutor.cs
- ListControlActionList.cs
- GZipDecoder.cs
- DataDocumentXPathNavigator.cs
- PerspectiveCamera.cs
- Expression.cs
- OrderingInfo.cs
- PrintDialog.cs
- ValueTable.cs
- ChangesetResponse.cs
- InfoCardSymmetricCrypto.cs
- WebRequest.cs
- InlineObject.cs
- SafeViewOfFileHandle.cs
- XmlSchemaDocumentation.cs
- KeyboardNavigation.cs
- X509Certificate2Collection.cs
- PersonalizationAdministration.cs
- XmlAttributeCollection.cs
- LicenseManager.cs
- ObjectDataSourceView.cs
- TopClause.cs
- FolderLevelBuildProvider.cs
- WorkflowServiceNamespace.cs
- PassportPrincipal.cs
- MissingMethodException.cs
- VirtualPathProvider.cs
- SlipBehavior.cs
- SqlLiftIndependentRowExpressions.cs
- StringCollectionMarkupSerializer.cs
- FixedTextContainer.cs
- ReadOnlyTernaryTree.cs
- SchemaLookupTable.cs
- ToolStripContentPanelRenderEventArgs.cs
- SqlParameter.cs
- ToolstripProfessionalRenderer.cs
- NativeMethods.cs
- TypeConverterHelper.cs
- ListBindingHelper.cs
- ImageButton.cs
- FamilyMap.cs
- UnsafeNativeMethods.cs
- RegularExpressionValidator.cs
- Cursor.cs
- WebHeaderCollection.cs
- VectorAnimationUsingKeyFrames.cs
- AsyncStreamReader.cs
- CodeDirectiveCollection.cs
- FunctionQuery.cs
- SelectorItemAutomationPeer.cs
- ToolboxItemImageConverter.cs
- ShutDownListener.cs
- SqlLiftIndependentRowExpressions.cs
- CTreeGenerator.cs
- CodeAccessSecurityEngine.cs
- Operand.cs
- DoubleLinkList.cs
- BookmarkList.cs
- HttpApplicationStateWrapper.cs
- CssClassPropertyAttribute.cs
- clipboard.cs
- AssemblyBuilder.cs
- StdRegProviderWrapper.cs
- HttpDebugHandler.cs
- SmtpCommands.cs
- SspiSecurityTokenProvider.cs