Я ничего не знаю о SignalR, но я почти уверен, что проблема как-то связана с вашим представлением, пытающимся отобразить HTML для свойств нулевого объекта.
Я просмотрел статью и не вижу никакой ссылки на фактическую базу данных, в которой хранятся данные, и не был предоставлен код для создания базы данных из вашего кода (а автор поста не знает, будет ли вы подключаться к нему) существующая база данных или генерирующая).
Смотрите здесь пример отображения вашего кода в СУЩЕСТВУЮЩУЮ базу данных.
Если у вас еще нет существующей базы данных, вам нужно указать свой код Entity Framework для ее создания; Эта статья покажет вам, как это сделать (материал, который вам нужен, находится внизу поста).
Теперь, глядя на то, как вы настроили свой класс сущностей и предполагая, что вы еще не сделали ничего из того, что упоминалось в двух статьях, Entity Framework должен автоматически создать для вас базу данных (что является поведением по умолчанию). - не уверен, что произойдет, если у вас не установлен SQL Server Express или выше). Вы проверили, есть ли у вас база данных в вашем экземпляре SQL-сервера? Он должен называться BlogPostContext . Заполните это некоторыми данными, и теперь все должно работать.
Так почему вы получаете эту проблему? На данный момент у вас есть
- Нет базы данных, ИЛИ
- База данных без данных.
Это означает, что ваши контроллеры либо
- Запрос данных от чего-то, что не существует, ИЛИ
- Запрос данных из пустой базы данных
Результат, который вы получите в обоих сценариях, будет нулевым объектом. Этот нулевой объект затем передается вашим представлениям, которые затем пытаются перебрать нулевой объект и сгенерировать ваше исключение.
Вы можете проверить это двумя способами.
- Проверьте наличие нулевого объекта в ваших представлениях и выводите HTML на основе вашей модели только в том случае, если проверка нуля возвращает значение false.
- Замените логику поиска в базе данных в ваших контроллерах на некоторый код, который генерирует некоторые фиктивные данные блога, и вместо этого передайте их в ваше представление.
Для решения 1 что-то похожее на следующее:
@if (Model == null)
{
<span>No data!</span>
}
@else
{
// All the auto generated view code goes here...
}
Для второго решения вам необходимо заменить код поиска данных в вашем контроллере. Поэтому удалите любой код, подобный этому;
BlogPost blogPost = db.BlogPosts.Find(id)
и замените его чем-то вроде этого;
BlogPost blog = new BlogPost()
{
Title = "Use Entity Framework Code-First";
Post = "blog post body goes here..."
};
IEnumerable<BlogPost> posts = new List<BlogPost>();
posts.Add(blog);
Примечание. Эти два решения предназначены для демонстрации проблемы, и вам следует вернуться к использованию кода извлечения данных после правильной настройки базы данных.