public static void RemoveOutputCacheItem(string path) { if (path == null) { throw new ArgumentNullException("path"); } if (path.Length == 0) { return; } if (path [0] != '/') { throw new ArgumentException("'" + path + "' is not an absolute virtual path."); } #if NET_4_0 RemoveOutputCacheItem(path, OutputCache.DefaultProviderName); #else HttpContext context = HttpContext.Current; HttpApplication app_instance = context != null ? context.ApplicationInstance : null; HttpModuleCollection modules = app_instance != null ? app_instance.Modules : null; OutputCacheModule ocm = modules != null?modules.Get("OutputCache") as OutputCacheModule : null; OutputCacheProvider internalProvider = ocm != null ? ocm.InternalProvider : null; if (internalProvider == null) { return; } internalProvider.Remove(path); #endif }
internal void AppendCollection(HttpModuleCollection other) { // appends another collection to this instance (mutates this instance) for (int i = 0; i < other.Count; i++) { AddModule(other.BaseGetKey(i), other.Get(i)); } }
private void RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) { RequestNotification requestNotifications; RequestNotification postRequestNotifications; // register an implicit filter module RegisterIntegratedEvent(appContext, IMPLICIT_FILTER_MODULE, RequestNotification.UpdateRequestCache| RequestNotification.LogRequest /*requestNotifications*/, 0 /*postRequestNotifications*/, String.Empty /*type*/, String.Empty /*precondition*/, true /*useHighPriority*/); // integrated pipeline will always use serverModules instead of <httpModules> _moduleCollection = GetModuleCollection(appContext); if (handlers != null) { HookupEventHandlersForApplicationAndModules(handlers); } // 1643363: Breaking Change: ASP.Net v2.0: Application_OnStart is called after Module.Init (Integarted mode) HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(context, this); // Call Init on HttpApplication derived class ("global.asax") // and process event subscriptions before processing other modules. // Doing this now prevents clearing any events that may // have been added to event handlers during instantiation of this instance. // NOTE: If "global.asax" has a constructor which hooks up event handlers, // then they were added to the event handler lists but have not been registered with IIS yet, // so we MUST call ProcessEventSubscriptions on it first, before the other modules. _currentModuleCollectionKey = HttpApplicationFactory.applicationFileName; try { _hideRequestResponse = true; context.HideRequestResponse = true; _context = context; Init(); } catch (Exception e) { RecordError(e); Exception error = context.Error; if (error != null) { throw error; } } finally { _context = null; context.HideRequestResponse = false; _hideRequestResponse = false; } ProcessEventSubscriptions(out requestNotifications, out postRequestNotifications); // Save the notification subscriptions so we can register them with IIS later, after // we call HookupEventHandlersForApplicationAndModules and process global.asax event handlers. _appRequestNotifications |= requestNotifications; _appPostNotifications |= postRequestNotifications; for (int i = 0; i < _moduleCollection.Count; i++) { _currentModuleCollectionKey = _moduleCollection.GetKey(i); IHttpModule httpModule = _moduleCollection.Get(i); ModuleConfigurationInfo moduleInfo = _moduleConfigInfo[i]; #if DBG Debug.Trace("PipelineRuntime", "RegisterEventSubscriptionsWithIIS: name=" + CurrentModuleCollectionKey + ", type=" + httpModule.GetType().FullName + "\n"); // make sure collections are in [....] Debug.Assert(moduleInfo.Name == _currentModuleCollectionKey, "moduleInfo.Name == _currentModuleCollectionKey"); #endif httpModule.Init(this); ProcessEventSubscriptions(out requestNotifications, out postRequestNotifications); // are any events wired up? if (requestNotifications != 0 || postRequestNotifications != 0) { RegisterIntegratedEvent(appContext, moduleInfo.Name, requestNotifications, postRequestNotifications, moduleInfo.Type, moduleInfo.Precondition, false /*useHighPriority*/); } } // WOS 1728067: RewritePath does not remap the handler when rewriting from a non-ASP.NET request // register a default implicit handler RegisterIntegratedEvent(appContext, IMPLICIT_HANDLER, RequestNotification.ExecuteRequestHandler | RequestNotification.MapRequestHandler /*requestNotifications*/, RequestNotification.EndRequest /*postRequestNotifications*/, String.Empty /*type*/, String.Empty /*precondition*/, false /*useHighPriority*/); }
internal void InitModules () { ModulesConfiguration modules; modules = (ModulesConfiguration) HttpContext.GetAppConfig ("system.web/httpModules"); if (null == modules) throw new HttpException ( HttpRuntime.FormatResourceString ("missing_modules_config")); _ModuleCollection = modules.CreateCollection (); if (_ModuleCollection == null) return; int pos, count; count = _ModuleCollection.Count; for (pos = 0; pos != count; pos++) ((IHttpModule) _ModuleCollection.Get (pos)).Init (this); }