private HttpHandlerAction GetHandlerMapping(HttpContext context, String requestType, VirtualPath path, bool useAppConfig) { CachedPathData pathData = null; HandlerMappingMemo memo = null; HttpHandlerAction mapping = null; // Check if cached handler could be used if (!useAppConfig) { // Grab mapping from cache - verify that the verb matches exactly pathData = context.GetPathData(path); memo = pathData.CachedHandler; // Invalidate cache on missmatch if (memo != null && !memo.IsMatch(requestType, path)) { memo = null; } } // Get new mapping if (memo == null) { // Load from config HttpHandlersSection map = useAppConfig ? RuntimeConfig.GetAppConfig().HttpHandlers : RuntimeConfig.GetConfig(context).HttpHandlers; mapping = map.FindMapping(requestType, path); // Add cache entry if (!useAppConfig) { memo = new HandlerMappingMemo(mapping, requestType, path); pathData.CachedHandler = memo; } } else { // Get mapping from the cache mapping = memo.Mapping; } return mapping; }
private HttpHandlerAction GetHandlerMapping(HttpContext context, string requestType, VirtualPath path, bool useAppConfig) { CachedPathData pathData = null; HandlerMappingMemo cachedHandler = null; HttpHandlerAction mapping = null; if (!useAppConfig) { pathData = context.GetPathData(path); cachedHandler = pathData.CachedHandler; if ((cachedHandler != null) && !cachedHandler.IsMatch(requestType, path)) { cachedHandler = null; } } if (cachedHandler == null) { mapping = (useAppConfig ? RuntimeConfig.GetAppConfig().HttpHandlers : RuntimeConfig.GetConfig(context).HttpHandlers).FindMapping(requestType, path); if (!useAppConfig) { cachedHandler = new HandlerMappingMemo(mapping, requestType, path); pathData.CachedHandler = cachedHandler; } return mapping; } return cachedHandler.Mapping; }