//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web { using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Runtime.CompilerServices; using System.Security.Principal; using System.Threading.Tasks; using System.Web.Caching; using System.Web.Configuration; using System.Web.Instrumentation; using System.Web.Profile; using System.Web.SessionState; using System.Web.WebSockets; [TypeForwardedFrom("System.Web.Abstractions, Version=3.5.0.0, Culture=Neutral, PublicKeyToken=31bf3856ad364e35")] public class HttpContextWrapper : HttpContextBase { private readonly HttpContext _context; public HttpContextWrapper(HttpContext httpContext) { if (httpContext == null) { throw new ArgumentNullException("httpContext"); } _context = httpContext; } public override ISubscriptionToken AddOnRequestCompleted(Action callback) { return _context.AddOnRequestCompleted(WrapCallback(callback)); } public override Exception[] AllErrors { get { return _context.AllErrors; } } [EditorBrowsable(EditorBrowsableState.Advanced)] public override bool AllowAsyncDuringSyncStages { get { return _context.AllowAsyncDuringSyncStages; } set { _context.AllowAsyncDuringSyncStages = value; } } public override HttpApplicationStateBase Application { get { return new HttpApplicationStateWrapper(_context.Application); } } // public override HttpApplication ApplicationInstance { get { return _context.ApplicationInstance; } set { _context.ApplicationInstance = value; } } public override AsyncPreloadModeFlags AsyncPreloadMode { get { return _context.AsyncPreloadMode; } set { _context.AsyncPreloadMode = value; } } // public override Cache Cache { get { return _context.Cache; } } public override IHttpHandler CurrentHandler { get { return _context.CurrentHandler; } } public override RequestNotification CurrentNotification { get { return _context.CurrentNotification; } } public override Exception Error { get { return _context.Error; } } public override IHttpHandler Handler { get { return _context.Handler; } set { _context.Handler = value; } } public override bool IsCustomErrorEnabled { get { return _context.IsCustomErrorEnabled; } } public override bool IsDebuggingEnabled { get { return _context.IsDebuggingEnabled; } } public override bool IsPostNotification { get { return _context.IsPostNotification; } } public override bool IsWebSocketRequest { get { return _context.IsWebSocketRequest; } } public override bool IsWebSocketRequestUpgrading { get { return _context.IsWebSocketRequestUpgrading; } } public override IDictionary Items { get { return _context.Items; } } public override PageInstrumentationService PageInstrumentation { get { return _context.PageInstrumentation; } } public override IHttpHandler PreviousHandler { get { return _context.PreviousHandler; } } // public override ProfileBase Profile { get { return _context.Profile; } } public override HttpRequestBase Request { get { return new HttpRequestWrapper(_context.Request); } } public override HttpResponseBase Response { get { return new HttpResponseWrapper(_context.Response); } } public override HttpServerUtilityBase Server { get { return new HttpServerUtilityWrapper(_context.Server); } } public override HttpSessionStateBase Session { get { HttpSessionState session = _context.Session; return (session != null) ? new HttpSessionStateWrapper(session) : null; } } public override bool SkipAuthorization { get { return _context.SkipAuthorization; } set { _context.SkipAuthorization = value; } } public override DateTime Timestamp { get { return _context.Timestamp; } } public override bool ThreadAbortOnTimeout { get { return _context.ThreadAbortOnTimeout; } set { _context.ThreadAbortOnTimeout = value; } } // public override TraceContext Trace { get { return _context.Trace; } } public override IPrincipal User { get { return _context.User; } set { _context.User = value; } } public override string WebSocketNegotiatedProtocol { get { return _context.WebSocketNegotiatedProtocol; } } public override IList WebSocketRequestedProtocols { get { return _context.WebSocketRequestedProtocols; } } public override void AcceptWebSocketRequest(Func userFunc) { _context.AcceptWebSocketRequest(userFunc); } public override void AcceptWebSocketRequest(Func userFunc, AspNetWebSocketOptions options) { _context.AcceptWebSocketRequest(userFunc, options); } public override void AddError(Exception errorInfo) { _context.AddError(errorInfo); } public override void ClearError() { _context.ClearError(); } public override ISubscriptionToken DisposeOnPipelineCompleted(IDisposable target) { return _context.DisposeOnPipelineCompleted(target); } [SuppressMessage("Microsoft.Globalization", "CA1304:SpecifyCultureInfo", Justification = "Matches HttpContext class")] public override object GetGlobalResourceObject(string classKey, string resourceKey) { return HttpContext.GetGlobalResourceObject(classKey, resourceKey); } public override object GetGlobalResourceObject(string classKey, string resourceKey, CultureInfo culture) { return HttpContext.GetGlobalResourceObject(classKey, resourceKey, culture); } [SuppressMessage("Microsoft.Globalization", "CA1304:SpecifyCultureInfo", Justification = "Matches HttpContext class")] public override object GetLocalResourceObject(string virtualPath, string resourceKey) { return HttpContext.GetLocalResourceObject(virtualPath, resourceKey); } public override object GetLocalResourceObject(string virtualPath, string resourceKey, CultureInfo culture) { return HttpContext.GetLocalResourceObject(virtualPath, resourceKey, culture); } public override object GetSection(string sectionName) { return _context.GetSection(sectionName); } public override void RemapHandler(IHttpHandler handler) { _context.RemapHandler(handler); } public override void RewritePath(string path) { _context.RewritePath(path); } public override void RewritePath(string path, bool rebaseClientPath) { _context.RewritePath(path, rebaseClientPath); } public override void RewritePath(string filePath, string pathInfo, string queryString) { _context.RewritePath(filePath, pathInfo, queryString); } public override void RewritePath(string filePath, string pathInfo, string queryString, bool setClientFilePath) { _context.RewritePath(filePath, pathInfo, queryString, setClientFilePath); } public override void SetSessionStateBehavior(SessionStateBehavior sessionStateBehavior) { _context.SetSessionStateBehavior(sessionStateBehavior); } public override object GetService(Type serviceType) { return ((IServiceProvider)_context).GetService(serviceType); } internal static Action WrapCallback(Action callback) { if (callback != null) { return context => callback(new HttpContextWrapper(context)); } else { return null; } } } }