Всем добрый вечер. Изучаю ASPNet MVC5 на основе чтения Metanit и реализации небольшого pet project- этакий HH но в очень упрощённой форме.
Возникла проблема при создании системы аутенфикации "Соискателя" в режиме Forms.
1. В файле web.config включил аутенфикацию Forms:
<authentication mode="Forms">
<forms name="cookies" timeout="2880" loginUrl="~/Home/Index" />
</authentication>
2. Также в файле web.config добавил строку подключения для EntityFramework:
<add name="JobSeekerRegistrationContext" connectionString="Data Source=
(LocalDB)\MSSQLLocalDB;AttachDbFilename='|DataDirectory|\FormsAuthJobSeeker.mdf'; Initial
Catalog=FormsAuthJobSeeker;Integrated Security=True"
3. Создал модель "Соискателя":
public class JobSeeker
{
//Идентификационный номер соискателя
public int JobSeekerID { get; set; }
//Фамилия соискателя
public string LastName { get; set; }
//Имя соискателя
public string FirstName { get; set; }
//Электронная почта
public string Email { get; set; }
//Пароль
public string Password { get; set; }
}
4. Создаю контекст данных для взаимодействия с БД:
public class JobSeekerContext: DbContext
{
public JobSeekerContext():base("JobSeekerRegistrationContext") { }
public DbSet<JobSeeker> JobSeekers { get; set; }
}
5. Создаю модель для регистрации соискателя:
public class JobSeekerRegistration
{
//фамилия соискателя
[Required]
public string LastName { get; set; }
//Имя соискателя
[Required]
public string FirstName{ get; set; }
//Почта
[Required]
public string Email { get; set; }
//Пароль
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
}
6.Создал форму для регистрации "Соискателя". Форма представляет собой модальное окно в
представлении Index,которая является домашней страницей моего приложения. При нажатии на
кнопку Регистрации данное модальное окно будет отображаться:
<form id="authtorization_joobseeker_form" action="/JobSeekerAccount/Register" method="post">
<p id="last_name">
<label id="joobseeker_last_name" for="joobseeker_last_name">Фамилия</label>
<input id="joobseeker_last_name" type="text" name="LastName">
</p>
<p id="first_name">
<label id="joobseeker_first_name" for="joobseeker_first_name">Имя</label>
<input id="joobseeker_first_name" type="text" name="FirstName">
</p>
<p id="mail">
<label id="joobseeker_mail" for="joobseeker_mail">Email</label>
<input id="joobseeker_mail" type="mail" name="Email">
</p>
<p id="password">
<label id="joobseeker_password" for="joobseeker_password">Пароль</label>
<input id="joobseeker_password" type="password" name="Password">
</p>
<input id="authtorization_joobseeker_submit" class="submit" type="submit" value="Регистрация">
</form>
7. Создал контроллер JobSeekerAccount с методом Register, который должен принимать данные
из POST запроса, который представлен выше и сохранять информацию в БД:
public class JobSeekerAccount : Controller
{
// GET: JobSeekerAccount
[HttpPost]
public ActionResult Register(JobSeekerRegistration model)
{
if (ModelState.IsValid)
{
JobSeeker jobSeeker = null;
using (JobSeekerContext db = new JobSeekerContext())
{
jobSeeker = db.JobSeekers.FirstOrDefault(JobSeeker => JobSeeker.LastName == model.LastName);
}
if (jobSeeker==null)
{
using (JobSeekerContext db = new JobSeekerContext())
{
db.JobSeekers.Add(new JobSeeker { LastName = model.LastName, FirstName = model.FirstName, Email = model.Email, Password = model.Password });
db.SaveChanges();
jobSeeker = db.JobSeekers.Where(JobSeeker => JobSeeker.Email == model.Email && JobSeeker.Password == model.Password).FirstOrDefault();
}
if (jobSeeker != null)
{
FormsAuthentication.SetAuthCookie(model.Email, true);
return RedirectToAction("Index", "Home");
}
}
return View(model);
8. Сборка собирается без ошибок. После ввода данных и отправки формы отображается следующая ошибка:
Ошибка сервера в приложении '/'.
Не удалось найти данный ресурс.
Описание: HTTP 404. Возможно, искомый ресурс (или одна из его зависимостей) удален, получил другое имя или временно недоступен. Просмотрите следующий URL-адрес и проверьте, что он введен правильно.
Запрошенный URL: /JobSeekerAccount/Register
Информация о версии: Платформа Microsoft .NET Framework, версия:4.0.30319; ASP.NET, версия:4.8.4261.0
БУДУ БЛАГОДАРЕН ЗА ЛЮБУЮ ПОМОЩЬ!