コード例 #1
0
        private HttpListener searchListener(Uri uri, out ListenerPrefix prefix)
        {
            prefix = null;
            if (uri == null)
            {
                return(null);
            }
            string       host         = uri.Host;
            int          port         = uri.Port;
            string       text         = HttpUtility.UrlDecode(uri.AbsolutePath);
            string       text2        = (text[text.Length - 1] != '/') ? (text + "/") : text;
            HttpListener httpListener = null;
            int          num          = -1;

            if (host != null && host.Length > 0)
            {
                foreach (ListenerPrefix listenerPrefix in this._prefixes.Keys)
                {
                    string path = listenerPrefix.Path;
                    if (path.Length >= num)
                    {
                        if (!(listenerPrefix.Host != host) && listenerPrefix.Port == port)
                        {
                            if (text.StartsWith(path) || text2.StartsWith(path))
                            {
                                num          = path.Length;
                                httpListener = this._prefixes[listenerPrefix];
                                prefix       = listenerPrefix;
                            }
                        }
                    }
                }
                if (num != -1)
                {
                    return(httpListener);
                }
            }
            List <ListenerPrefix> list = this._unhandled;

            httpListener = EndPointListener.matchFromList(host, text, list, out prefix);
            if (text != text2 && httpListener == null)
            {
                httpListener = EndPointListener.matchFromList(host, text2, list, out prefix);
            }
            if (httpListener != null)
            {
                return(httpListener);
            }
            list         = this._all;
            httpListener = EndPointListener.matchFromList(host, text, list, out prefix);
            if (text != text2 && httpListener == null)
            {
                httpListener = EndPointListener.matchFromList(host, text2, list, out prefix);
            }
            if (httpListener != null)
            {
                return(httpListener);
            }
            return(null);
        }