Метод HttpDelete в. net MVC возвращает ошибку 405 - метод не разрешен - PullRequest
0 голосов
/ 09 мая 2020

Во всей онлайн-информации указано, что нужно внести изменения в файл web.config, но, как я понимаю, файл web.config не существует в более новых версиях. net mvc. Что же тогда делать, чтобы разрешить метод httpDelete?

(Я создал в своем контроллере метод удаления, который вызывает MySQL метод «удалить из таблицы»)

код:

[HttpDelete]
        public ActionResult Delete() //string id
        {
            connectionString();
            conn.Open();
            com.Connection = conn;

            var userId = HttpContext.Session.GetString("userId");

            var stm = "Delete from lex_reminders where reminder_id=@id"; //" + id + ";
            var cmd = new MySqlCommand(stm, conn);
            cmd.Parameters.AddWithValue("@id", 25);
            int res = cmd.ExecuteNonQuery();

            if (res>0)
            {
                conn.Close();
                Create(userId);
                return View("Create");
            }
            else
            {
                conn.Close();
                return View("Error");
            }
        }

1 Ответ

0 голосов
/ 09 мая 2020

Обратите внимание, что метод HTTP Get``Delete не удаляет указанную запись, он должен возвращать представление этой сущности, где вы можете отправить (HttpPost) удаление. Выполнение операции удаления в ответ на запрос GET ( или, если на то пошло, выполнение операции редактирования, операции создания или любой другой операции, которая изменяет данные) открывает брешь в безопасности . прочтите этот документ, чтобы узнать о дыре в безопасности: http://stephenwalther.com/archive/2009/01/21/asp-net-mvc-tip-46-ndash-donrsquot-use-delete-links-because См. ниже пример метода удаления с помощью HtpPost:

// GET: /Movies/Delete/5
public ActionResult Delete(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Movie movie = db.Movies.Find(id);
    if (movie == null)
    {
        return HttpNotFound();
    }
    return View(movie);
}

// POST: /Movies/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
    Movie movie = db.Movies.Find(id);
    db.Movies.Remove(movie);
    db.SaveChanges();
    return RedirectToAction("Index");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...