繁体   English   中英

.net MVC 中的 HttpDelete 方法返回错误 405 - 方法不允许

[英]HttpDelete method in .net MVC returns error 405 - method not allowed

所有在线信息都表明要对 web.config 文件进行更改,但据我了解,web.config 文件在较新版本的 Z2D50972FECD376129545507F1062089Z mvc 中不存在。 那么如何允许 httpDelete 方法呢?

(我在我的 controller 中创建了删除方法,该方法调用 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");
            }
        }

请注意,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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM