Windows phone 7 Windows Phone应用程序在3G环境下运行时引发异常(自动退出),但在WIFI环境下可以正常运行。很奇怪
我已经尝试了数百次来查找这段代码的错误。 它只能通过WIFI工作,但当我关闭手机上的WIFI并再次运行应用程序时,该应用程序会自动关闭,这意味着它引发了一个异常 这个应用程序很简单,我使用WebClint()下载HTML源代码,并用HTML Agility Pack对其进行解析,然后将它们添加到列表中,然后访问列表以创建每个新闻对象 我尝试捕获异常stacktrace并将其绑定到texblock,它表示ArgumentOutOfRange异常和Genericlist(int32索引)中的一些内容 我不知道,在wifi上还可以,但在3G网络上不行。有人能帮忙吗Windows phone 7 Windows Phone应用程序在3G环境下运行时引发异常(自动退出),但在WIFI环境下可以正常运行。很奇怪,windows-phone-7,webclient,html-agility-pack,Windows Phone 7,Webclient,Html Agility Pack,我已经尝试了数百次来查找这段代码的错误。 它只能通过WIFI工作,但当我关闭手机上的WIFI并再次运行应用程序时,该应用程序会自动关闭,这意味着它引发了一个异常 这个应用程序很简单,我使用WebClint()下载HTML源代码,并用HTML Agility Pack对其进行解析,然后将它们添加到列表中,然后访问列表以创建每个新闻对象 我尝试捕获异常stacktrace并将其绑定到texblock,它表示ArgumentOutOfRange异常和Genericlist(int32索引)中的一些内容
public partial class MainPage : PhoneApplicationPage
{
string srcHTML;
HtmlNode UrlNode;
ObservableCollection<News> newsList = new ObservableCollection<News>();
List<HtmlNode> headlines;
HtmlDocument hd;
News n;
// Constructor
public MainPage()
{
InitializeComponent();
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
WebClient webClenet = new WebClient();
webClenet.Encoding = new HtmlAgilityPack.Gb2312Encoding();
webClenet.DownloadStringAsync(new Uri("http://www.6park.com/news/multi1.shtml", UriKind.RelativeOrAbsolute));
webClenet.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClenet_DownloadStringCompleted);
}
private void webClenet_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
srcHTML = e.Result;
GetHeadlinePage(srcHTML);
}
private void GetHeadlinePage(string srcHTML)
{
hd = new HtmlDocument();
hd.LoadHtml(srcHTML);
try
{
UrlNode = hd.DocumentNode.ChildNodes[1].ChildNodes[3].ChildNodes[8].ChildNodes["tr"].ChildNodes["td"].ChildNodes["ul"];
headlines = UrlNode.Descendants("a").ToList();
foreach (var headline in headlines)
{
if (headline.Attributes["href"].Value.Contains("6park"))
{
n = new News();
n.NewsTitle = headline.InnerText;
n.NewsUrl = headline.Attributes["href"].Value;
n.NewsDetails = headline.NextSibling.InnerText.Replace("- ", "新闻来源:") + headline.NextSibling.NextSibling.InnerText + headline.NextSibling.NextSibling.NextSibling.InnerText;
newsList.Add(n);
}
}
}
catch (Exception ex)
{
//NewsSource.Text = ex.StackTrace + "\n" + ex.Message;
}
NewslistBox.ItemsSource = newsList;
//NewsHeadlineWebBrowser.NavigateToString(ConvertExtendedASCII(headNews));
}
}
public部分类主页:PhoneApplicationPage
{
字符串srcHTML;
HtmlNode-UrlNode;
ObservableCollection newsList=新的ObservableCollection();
列出标题;
HtmlDocument hd;
新闻n;
//建造师
公共主页()
{
初始化组件();
}
已加载专用void PhoneApplicationPage_(对象发送方,路由目标)
{
WebClient webClenet=新的WebClient();
webClenet.Encoding=new-HtmlAgilityPack.Gb2312Encoding();
webClenet.DownloadStringAsync(新Uri(“http://www.6park.com/news/multi1.shtml,UriKind.相对溶质);
webClenet.DownloadStringCompleted+=新的DownloadStringCompletedEventHandler(webClenet\u DownloadStringCompleted);
}
私有void webClenet_DownloadStringCompleted(对象发送方,DownloadStringCompletedEventArgs e)
{
srcHTML=e.结果;
GetHeadlinePage(srcHTML);
}
私有void GetHeadlinePage(字符串srcHTML)
{
hd=新的HtmlDocument();
hd.LoadHtml(srcHTML);
尝试
{
UrlNode=hd.DocumentNode.ChildNodes[1]。ChildNodes[3]。ChildNodes[8]。ChildNodes[“tr”]。ChildNodes[“td”]。ChildNodes[“ul”];
headlines=UrlNode.substands(“a”).ToList();
foreach(标题中的var标题)
{
如果(headline.Attributes[“href”].Value.Contains(“6park”))
{
n=新新闻();
n、 NewsTitle=headline.InnerText;
n、 NewsUrl=headline.Attributes[“href”].Value;
n、 NewsDetails=headline.NextSibling.InnerText.Replace(“-”,”新闻来源:") + headline.NextSibling.NextSibling.InnerText+headline.NextSibling.NextSibling.NextSibling.InnerText;
新闻列表。添加(n);
}
}
}
捕获(例外情况除外)
{
//newsource.Text=ex.StackTrace+“\n”+ex.Message;
}
NewslistBox.ItemsSource=新闻列表;
//NewsHeadlineWebBrowser.NavigateToString(ConvertExtendedASCII(headNews));
}
}
我将调试传递给GetHeadlinePage()
的值
我怀疑响应因网络而异,或者请求超时,或者您遇到了其他错误
我假设对LoadHtml()
的调用失败,因为它不在任何异常处理/捕获中,并且您没有验证传递给它的值