С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Hakob1997
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 28
1

Ошибка ArgumentNullException в MVC

16.10.2016, 16:04. Просмотров 912. Ответов 11
Метки нет (Все метки)

Здравствуйте я новичок помогите понять в чем проблема

Controller
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult AccountRegister(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                User user = null;
                    using (UserContext db = new UserContext())
                    {
                        user = db.Users.FirstOrDefault(u => u.Email == model.Email);
 
                    }
                    if (user == null)
                    {
                        // создаем нового пользователя
                        using (UserContext db = new UserContext())
                        {
                            db.Users.Add(new User { Email = model.Email, Password = model.Password });
                            db.SaveChanges();
 
                            user = db.Users.Where(u => u.Email == model.Email && u.Password == model.Password).FirstOrDefault();
                        }
                        // если пользователь удачно добавлен в бд
                        if (user != null)
                        {
                            FormsAuthentication.SetAuthCookie(model.Name, true);
                            return RedirectToAction("Index", "Home");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", "Пользователь с таким логином уже существует");
                    }
                }
 
                return View(model);
        }

Выдает ошибка Value cannot be null.
Parameter name: source
Exception Details: System.ArgumentNullException: Value cannot be null.
Parameter name: source
на этом строке user = db.Users.FirstOrDefault(u => u.Email == model.Email);
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2016, 16:04
Ответы с готовыми решениями:

Постоянно ошибка Ошибка выполнения дочернего запроса для дескриптора 'System.Web.Mvc.HttpHandlerUtil+ServerExe
Всем привет! Раз 10 в день получаю такую ошибку: Ошибка выполнения дочернего...

Asp.net core ArgumentNullException: Value cannot be null
Кратко. При попытке регистрации отсылает Internal server error An unhandled...

Ошибка 500 ajax mvc
Проблема - не могу самостоятельно разобраться. При запуске из студии все...

MVC 4 Ошибка при создании проекта
Пробовал ставить отсюда http://www.asp.net/downloads и отсюда...

Непонятная ошибка работы javascript в MVC Razor4
Доброго времени суток, форумчане! Суть проблемы в следующем: Есть...

11
ORLENOK
89 / 88 / 37
Регистрация: 05.08.2011
Сообщений: 419
Завершенные тесты: 5
16.10.2016, 18:29 2
Hakob1997,
model не null?
user может быть null?
0
sau
1994 / 1612 / 264
Регистрация: 22.07.2011
Сообщений: 6,090
Завершенные тесты: 1
16.10.2016, 18:59 3
Приводите полный стэк ошибки , ибо зачастую ТС даже проблемную строчку правильно указать немогут.
Parameter name: source - это уже параметр , который говорит о том , что ошибка внутри EF , тобишь на строке db.SaveChanges();
- и скорее всего в конфиг файле не настроена строка подключения.
0
lvlkoo
.NET C#,ASP.NET MVC
450 / 398 / 185
Регистрация: 16.10.2010
Сообщений: 1,627
Завершенные тесты: 2
16.10.2016, 19:17 4
Лучший ответ Сообщение было отмечено Metall_Version как решение

Решение

Цитата Сообщение от sau Посмотреть сообщение
Parameter name: source - это уже параметр , который говорит о том , что ошибка внутри EF , тобишь на строке db.SaveChanges();
О чем это вы? )

ТС вам явно сказал в какой строке ошибка, а если учесть то что метод расширение FirstOrDefault принимающий параметр IEnumerable называется source, то в полне логично предположить что что

db.Users
== null
1
sau
1994 / 1612 / 264
Регистрация: 22.07.2011
Сообщений: 6,090
Завершенные тесты: 1
16.10.2016, 19:47 5
Пардон , верно , я почему то подумал на похожий запрос FirstOrDefault строчками ниже.
Однако , в каких случаях db.Users может быть null ?
0
Hakob1997
0 / 0 / 0
Регистрация: 29.08.2015
Сообщений: 28
16.10.2016, 20:22  [ТС] 6
И что это значит? Как ее исправить? Помогите решить пожалуйста
Вот config файл
HTML5
1
2
3
4
<add name="MyDbConnection" connectionString="Data Source=(localdb)\v11.0; Initial Catalog=AspNetRegisterApp; 
         Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
А это база
C#
1
2
3
4
5
6
   public class UserContext : DbContext
    {
        
        public DbSet<User> Users;
    }
}
0
ORLENOK
89 / 88 / 37
Регистрация: 05.08.2011
Сообщений: 419
Завершенные тесты: 5
16.10.2016, 22:22 7
lvlkoo, sau, тоже не могу понять, в каких случаях db.Users может быть null.
Hakob1997, Поставьте Brackpoint или Точку остановы на эту строку:
C#
1
user = db.Users.FirstOrDefault(u => u.Email == model.Email);
Наведите мышкой на db.Users, посмотрите, что пишет, если null так и будет написано. Наведите на model, тоже проверьте. Или прикрепите Ваш проект.
0
lvlkoo
.NET C#,ASP.NET MVC
450 / 398 / 185
Регистрация: 16.10.2010
Сообщений: 1,627
Завершенные тесты: 2
16.10.2016, 22:54 8
ORLENOK, наверное в тех, когда коннект к базе не прошел\таблицы не существует ну или чтото подобное.

Hakob1997, когда у вас появляеться исключение, то в просмотре информации об исключении есть свойство InnerException. Что там написано? Скорее всего там должно был исключение EntityFramework уточняющее проблемму .
Вы ведь миграцю в базу заливали? И еще я не вижу у вас конструктора в который вы передаете строку подключения.

Класс контекста у вас должен выглядеть примерно так

C#
1
2
3
4
5
6
7
public class UserContext : DbContext
    {
        
        public DbSet<User> Users;
       
        public UserContext(): base("MyDbConnection") {}
    }
0
IamRain
1376 / 1230 / 387
Регистрация: 02.08.2011
Сообщений: 3,628
17.10.2016, 21:56 9
Цитата Сообщение от sau Посмотреть сообщение
Однако , в каких случаях db.Users может быть null ?
Возможно, что ТС в своем DbContext не инициализирует DbSet свойства.
Hakob1997, думаю, надо добавить вот это:
C#
1
2
3
4
public UserContext():base("myConnectionString")
{
    Users = Set<User>();
}
0
lvlkoo
.NET C#,ASP.NET MVC
450 / 398 / 185
Регистрация: 16.10.2010
Сообщений: 1,627
Завершенные тесты: 2
17.10.2016, 22:02 10
IamRain, ни разу не встречал, чтобы сеты нужно было инициализировать в конструкторе контекста. Скинте ссылки где почитать об этом? Мб я чегото не знаю

EntityFramework сам этим занимается
0
IamRain
1376 / 1230 / 387
Регистрация: 02.08.2011
Сообщений: 3,628
17.10.2016, 23:04 11
Цитата Сообщение от lvlkoo Посмотреть сообщение
Мб я чегото не знаю
А для чего тогда нужен метод Set<T>()?
Просто в процессе работы столкнулся, возможно и не связанная с ошибкой ТС проблема.
А, не, видимо проблема в том, что DbSet объявлен как член, а не как свойство, отсюда:
You should define properties instead of fields for sets in your context class. So, instead of fields
Добавлено через 2 минуты
Я помню, что у меня возникало точно такое же описание ошибки, но точно не в этом была проблема.
0
lvlkoo
.NET C#,ASP.NET MVC
450 / 398 / 185
Регистрация: 16.10.2010
Сообщений: 1,627
Завершенные тесты: 2
17.10.2016, 23:16 12
Цитата Сообщение от IamRain Посмотреть сообщение
А для чего тогда нужен метод Set<T>()?
Для того чтобы получить Set из T объектов

Действительно вы правы насчет свойств, я даже не обратил на это внимание. Обычно пишешь авто свойства на автомате в контексте и даже не задумываешься о том что их нет. Я тоже так когда то задумал и объявил DbSet'ы не как свойства, словил ошибку, пол часа искал в чем проблема, потом когда заметил - очень долго бился головой об стену
0
17.10.2016, 23:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2016, 23:16

Ошибка Майкрософтских уроках по ASP.NET MVC
в теме http://msdn.microsoft.com/ru-ru/asp.net/gg447368 представлен такой код,...

Ошибка при использовании библиотеки Pagedlist.mvc
Доброго времени суток! Есть страничка на которую выводится таблица с данными...

Сайт опросов (голосований) на ASP MVC 3 и ошибка NullReferenceException
Всем привет! Назвал так тему, потому что будут думаю много вопросов пока...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru