C # HtmlAgilityPack TypeAccessException при загрузке страницы из Url

c# exception html-agility-pack request windows-mobile

Вопрос

Я пытаюсь разработать приложение для Windows-телефона, которое анализирует HTML-страницу (полученную через Интернет) в переменной HTMLDocument и использует ее для проверки страницы, получения значений и т. Д. И т. Д. Даже при попытке подключения к страницам, таким как BBC News Home Я получаю сообщение об ошибке.

System.TypeAccessException: Attempt by security transparent method 'HtmlAgilityPack.HtmlWeb.LoadFromWebAsync(System.Uri, System.Text.Encoding, System.Net.NetworkCredential)' to access security critical type 'System.Net.NetworkCredential' failed.
   at HtmlAgilityPack.HtmlWeb.LoadFromWebAsync(Uri uri, Encoding encoding, NetworkCredential credentials)
   at HtmlAgilityPack.HtmlWeb.<LoadFromWebAsync>d__0.MoveNext()

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

private async Task GetHtmlDocument(string url)
{
    Debug.WriteLine("This is a line");
    try
    {
        HtmlWeb web = new HtmlWeb();
        HtmlDocument rootDocument = await web.LoadFromWebAsync(url);
    }
    catch (Exception e)
    {
        Debug.WriteLine("Exception: " + e);
    }
}

Принятый ответ

Я использую Windows Phone 8.1, который мне, вероятно, нужно было упомянуть в вопросе. Работает.

private async Task GetHtmlDocument(string url)
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
    request.Credentials = new LoginCredentials().Credentials;

    try
    {
        WebResponse myResponse = await request.GetResponseAsync();
        HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
        htmlDoc.OptionFixNestedTags = true;
        htmlDoc.Load(myResponse.GetResponseStream());
    } catch (...) { ... }
}

Популярные ответы

Я pasrse Html по html-agility-pack вот так:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);

//cookie if you need
request.CookieContainer = cookie;
//WebRequestMethods.Http.Get
//or WebRequestMethods.Http.Post
request.Method = method;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
request.Headers.Add("Accept-Language",  "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
request.ServicePoint.Expect100Continue = false;
request.Timeout = 100000;
request.ContentType = "application/x-www-form-urlencoded";

using (WebResponse myResponse = request.GetResponse())
{   
    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
    htmlDoc.OptionFixNestedTags = true;
    htmlDoc.Load(myResponse.GetResponseStream(), Encoding.GetEncoding(1251));
}

а потом

string text;

HtmlAgilityPack.HtmlNode node = _doc.DocumentNode.SelectSingleNode(Xpath);
if (node != null) text = node.InnerText;


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему