Ошибка при запуске WebClient.Нет ошибок при отладке - PullRequest
1 голос
/ 22 декабря 2011

Я пытаюсь получить HTML с веб-сайта.Я могу успешно получить его с помощью WebClient, но только когда я отлаживаю код.Когда я нажимаю Ctrl + F5, он просто выдает ошибку и выключается.Почему?

Вот код:

        string input = " a href=\"/.* .* /a "; //spaces because < and > will be removed soon.
        List<string> matchedlinks = new List<string>();
        WebClient wc = new WebClient();
        wc.BaseAddress = "http://www.sharpq.com";
        wc.Headers.Add("user-agent", @"Mozilla/5.0 (Windows NT 6.0; rv:8.0.1) 
Gecko/20100101 Firefox/8.0.1");
        Uri baseUri = new Uri("http://www.sharpq.com");
        wc.Proxy = null;
        string data = "error";
        Uri nurl = new Uri("http://www.sharpq.com");
        try
        {
            Stream s = wc.OpenRead(baseUri);
            StreamReader sr = new StreamReader(s);
            StringBuilder sb = new StringBuilder(sr.ReadToEnd());
            data = sb.ToString();
            Console.WriteLine(data);
        }
        catch (System.Net.WebException webexp)
        {
            Console.WriteLine("Error: " + webexp.Message);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
        data=data.Replace('>', ' ').Replace('<', ' ');
        if (!data.Equals("error"))
        {
            try
            {
                Regex regex = new Regex(data, RegexOptions.IgnoreCase);
                foreach (Match m in regex.Matches(input))
                {
                    matchedlinks.Add(m.ToString());
                }
            }
            catch (ArgumentException argx)
            {
                Console.WriteLine("error: " + argx.Message);
            }

        }
        string query = @"Insert into scriptor_w3schools_Data(rawData, linksData) values (@raw, @links)";
        SqlCommand cmd = new SqlCommand(query, scriptor_Connection);
        cmd.CommandType = System.Data.CommandType.Text;
        cmd.Parameters.Add("@raw", System.Data.SqlDbType.Text).Value = data;
        cmd.Parameters.Add("@links", System.Data.SqlDbType.Text).Value = "";
        foreach(string s in matchedlinks)
            cmd.Parameters["@links"].Value += s;

        connect();
        try
        {
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        disconnect();
        cmd.Dispose();

Это происходило все время.Если я запускаю его, он не может получить данные с сайта.Если я отлаживаю его, данные извлекаются, но теперь регулярное выражение выдает ошибку, сообщая неверные аргументы или что-то в этом роде.

Я думаю, что это может быть из-за некоторого ограничения по времени для WebClient.Это так?Как я могу получить данные.Я пробовал DownloadString и то же самое.

Редактировать 1: Во время выполнения Runnig сначала поймать (получение данных).Во время отладки второй (regex)

- это образ сообщения об ошибке, сгенерированного при его запуске.

исключение регулярного выражения:

синтаксический анализ "DOCTYPE html html head meta charset =" utf-8 "/ title sharpq home home pageдобро пожаловать, резкое домашнее промышленное обучение, семинары по руководству проектами, глубокое погружение12 / 22/2011 7:58:18 AM / title meta http-equ = "Content" content = "text / html;charset = utf-8 "/ meta name =" description "content =" sharpq.com предлагает ученикам колледжа обучение по технологии B.Tech и MCA, семинары, классные занятия, глубокое погружение и руководство проектом "/ meta name =" Keywords "content ="sharpq.com, SharpQ Solutions, sharpq, карьерный кий, sharpq, sharpq solutions, производственное обучение, коучинг, .net обучение, asp.net обучение, MCA обучение, 6 месяцев обучения, 6 недель обучения, руководство проектом, .net проекты, asp.net мастерские, Б. Тех.мастерские, B.Tech, курукшетра, институт компьютеров, компьютерные технологии, занятия по глубокому погружению, уроки дизайна, дизайн, мастерские дизайна, дизайн фотошопа "/ link href =" / Content / styles / base.css "rel =" stylesheet "type= "text / css" / script src = "/ Scripts / jquery-1.5.1.min.js" type = "te ..." - [xy] диапазон в обратном порядке.

Что это - [xy] диапазон в обратном порядке. ?

...