【问题标题】:visual studio code 400 bad request视觉工作室代码 400 错误请求
【发布时间】:2017-12-08 22:50:46
【问题描述】:

我有一个示例 .NET Core 2.0 WebApi 代码,可在 Visual Studio 2017 中运行,但相同的代码在 Visual Code 1.18 中无法运行。 POST 命令返回 400 Bad Request。 GET 命令适用于两者。 我一定是缺少一些在 Visual Studio 2017 中为您完成的文件或设置。 有谁知道我在 Visual Studio Code 中做错了什么?

谢谢你 彼得

这是控制器的代码:

using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using TodoApi.Models;
using System.Linq;

namespace TodoApi.Controllers
{
    [Route("api/[controller]")]
    public class TodoController : Controller
    {
        private readonly TodoContext _context;

        public TodoController(TodoContext context)
        {
            _context = context;

            if (_context.TodoItems.Count() != 0) return;
            _context.TodoItems.Add(new TodoItem { Name = "Item1" });
            _context.SaveChanges();
        }

        [HttpGet]
        public IEnumerable<TodoItem> GetAll()
        {
            return _context.TodoItems.ToList();
        }

        [HttpGet("{id}", Name = "GetTodo")]
        public IActionResult GetById(long id)
        {
            TodoItem item = _context.TodoItems.FirstOrDefault(t => t.Id == id);
            if (item == null)
            {
                return NotFound();
            }
            return new ObjectResult(item);
        }

        [HttpPost]
        public IActionResult Create([FromBody] TodoItem item)
        {
            if (item == null)
            {
                return BadRequest();
            }

            _context.TodoItems.Add(item);
            _context.SaveChanges();

            return CreatedAtRoute("GetTodo", new { id = item.Id }, item);
        }

        [HttpPut("{id}")]
        public IActionResult Update(long id, [FromBody] TodoItem item)
        {
            if (item == null || item.Id != id)
            {
                return BadRequest();
            }

            TodoItem todo = _context.TodoItems.FirstOrDefault(t => t.Id == id);
            if (todo == null)
            {
                return NotFound();
            }

            todo.IsComplete = item.IsComplete;
            todo.Name = item.Name;

            _context.TodoItems.Update(todo);
            _context.SaveChanges();
            return new NoContentResult();
        }

        [HttpDelete("{id}")]
        public IActionResult Delete(long id)
        {
            TodoItem todo = _context.TodoItems.FirstOrDefault(t => t.Id == id);
            if (todo == null)
            {
                return NotFound();
            }

            _context.TodoItems.Remove(todo);
            _context.SaveChanges();
            return new NoContentResult();
        }
    }
}

【问题讨论】:

  • 当你在 POST 方法中放置一个断点,并通过它进行调试,会发生什么?
  • Visual Studio Code 如何运行您的应用程序? IIS、IIS Express 还是 HttpSys?此外,有时要在 IIS 或 HttpSys 中运行,如果它在 Code 中运行,则必须提升为管理员。
  • 如何发送 POST 命令?来自邮递员?铬合金?还有什么?

标签: c# visual-studio asp.net-web-api visual-studio-code


【解决方案1】:

很抱歉浪费了大家的时间!

对于 Visual Studio Code,我在使用 Postman 时正文中没有任何内容,当然 [FormBody] 参数为空,这就是我收到错误请求消息的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-14
    • 2020-12-08
    • 1970-01-01
    • 2018-07-05
    • 2015-07-10
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    相关资源
    最近更新 更多