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;
 }