Я получаю исключение нулевой ссылки всегда при первом веб-запросе - PullRequest
0 голосов
/ 23 февраля 2012

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

Мое приложение пытается загрузить XML-файл из: http://www.choomba.org/mxuutiset.xml, просто и макетировать для будущего веб-сервиса.

Мой вопрос, почему я получаюисключение нулевой ссылки?Я думаю, что следовал онлайн-учебнику к письму, но все же он не работает.Образец службы погоды работает просто отлично.

Что я делаю не так?

Я положил весь код на Skydrive, посмотрите: ссылка

Вот мой класс модели:

using System;
using AgFx;
using System.Collections.ObjectModel;
using MxSuomi.Models;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Linq;
using System.Globalization;

namespace AgFxTest
{
[CachePolicy(CachePolicy.NoCache)]
public class UutisetServiceModel : ModelItemBase<UutinenLoadContext>
{

    public UutisetServiceModel() { }

    public UutisetServiceModel(int id)
        : base(new UutinenLoadContext(id))
    {

    }

    private ObservableCollection<Uutinen> _uutiset = new ObservableCollection<Uutinen>();

    public ObservableCollection<Uutinen> Uutiset
    {
        get { return _uutiset; }
        set
        {

            if (value == null) throw new ArgumentNullException();

            if (_uutiset != null)
            {
                _uutiset.Clear();

                foreach (var item in value)
                {
                    _uutiset.Add(item);
                }
            }
            RaisePropertyChanged("Uutiset");

        }
    }

    public class UutisetServiceModelLoader : IDataLoader<UutinenLoadContext>
    {
        private const string feedUri = "http://www.choomba.org/mxuutiset.xml?rnd={0}";

        public LoadRequest GetLoadRequest(UutinenLoadContext loadContext, Type objectType)
        {
            string uri = string.Format(feedUri, loadContext.Id);
            return new WebLoadRequest(loadContext, new Uri(uri));
        }

        public object Deserialize(UutinenLoadContext loadContext, Type objectType, System.IO.Stream stream)
        {
            XElement uutisetXml = XElement.Load(stream);

            var temp = (from uutinen in uutisetXml.Descendants("uutinen")
                        select new Uutinen()
                        {
                            Id = int.Parse(uutinen.Element("id").Value),
                            Otsikko = uutinen.Element("otsikko").Value,
                            Pvm = DateTime.Parse(uutinen.Element("pvm").Value, new CultureInfo("fi-FI")),
                            Linkki = uutinen.Element("linkki").Value,
                            Kuva = uutinen.Element("kuva").Value

                        }).ToList();


            temp = temp.OrderByDescending(p => p.Pvm).ToList();

            var model = new UutisetServiceModel(loadContext.Id);

            model.Uutiset = new ObservableCollection<Uutinen>();
            foreach (var item in temp)
            {
                model.Uutiset.Add(item);
            }


            return model;
        }

    }
}
}

и вот мой код главной страницы:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using AgFx;
using System.Threading;
using System.Diagnostics;

namespace AgFxTest {
public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void btnLoadData_Click(object sender, RoutedEventArgs e)
    {
        this.DataContext = DataManager.Current.Load<UutisetServiceModel>(int.Parse(tbUutinenId.Text));

    }
}
}

вот отладочный вывод для ошибки:

No cache found for AgFxTest.UutisetServiceModel (ID=
2/23/2012 10:59:44 AM: Queuing load for UutisetServiceModel (ID=0)
A first chance exception of type 'System.NullReferenceException' occurred in System.Windows.dll
A first chance exception of type 'System.NullReferenceException' occurred in System.Windows.dll
A first chance exception of type 'System.NullReferenceException' occurred in System.Windows.dll
A first chance exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll
The thread 'Storage Thread' (0xe050182) has exited with code 0 (0x0).
A first chance exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll
The thread 'General Worker' (0xee403f2) has exited with code 0 (0x0).
The thread '<No Name>' (0x1b71ae2) has exited with code 0 (0x0).
The thread '<No Name>' (0xe39016e) has exited with code 0 (0x0).
The thread '<No Name>' (0xfd003a6) has exited with code 0 (0x0).
The thread '<No Name>' (0xeab03ea) has exited with code 0 (0x0).
The program '[248251222] UI Task: Managed' has exited with code 0 (0x0).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...