当前位置:  开发笔记 > 后端 > 正文

ASP.net 5 Web API Post CreatedAtRoute始终返回500内部服务器错误

如何解决《ASP.net5WebAPIPostCreatedAtRoute始终返回500内部服务器错误》经验,为你挑选了0个好方法。

数据库有效.它实际上插入了新记录,但是当我使用CreatedAtRoute()时,我总是从客户端获得500回.为什么?

我的控制器获取:

[Route("api/[controller]")]
public class IngredientController : Controller
{
    private SimpleCookbookDbContext db { get; set; }

    public IngredientController(SimpleCookbookDbContext context)
    {
        db = context;
    }

    // GET: api/values
    [HttpGet]
    public async Task> Get()
    {
        return await db.Ingredients.ToListAsync();
    }

    // GET api/values/5
    [HttpGet("{id}", Name = "GetIngredient")]
    public async Task Get(int id)
    {
        return await db.Ingredients.SingleOrDefaultAsync(i => i.Id == id);
    }

    [HttpPost]
    public async Task Post([FromBody]Ingredient ingredient)
    {
        try
        {

            var res = await IM.CreateAsync(ingredient);

            if (!res.Success)
            {
                return HttpBadRequest(res.Errors);
            }

        }
        catch(Exception)
        {
            return new HttpStatusCodeResult((int)HttpStatusCode.InternalServerError);
        }


        return CreatedAtRoute("GetIngredient", new { controller="Ingredient", id = ingredient.Id });
    }
}

我试过调试一下.是的,如果我试图插入的成分已经存在,它将返回HttpBadRequest.

我尝试在catch块中放置一个断点,我没有到达那里,所以我假设数据库没有错误.

记录确实插入到数据库中.我确实上线,return CreatedAtRoute(...);但我得到500回.(我也在那里设置断点).

现在,我正在使用提琴手.我的要求是这样的:

POST /api/ingredient HTTP/1.1
Host: localhost:55303
Content-Type: application/json;charset=utf-8

{"id":0, "name": "rosemary", "description": "rosemary"}

我还删除了属性名称上的双引号,我仍然得到相同的500.

我确实在初创公司解决了骆驼套管:

services.AddMvc().AddJsonOptions(options => {
                options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            });

我想我展示了所有相关代码.如果您需要更多,请告诉我.


UPDATE

CreatedAtRoute有一个带有三个参数的重载:

return CreatedAtRoute("GetIngredient", new { controller="Ingredient", id = ingredient.Id }, ingredient);

最后一个参数是一个对象,您可以动态创建或传回整个实体,具体取决于您要公开的内容.

奇怪的是,如何使用2参数变体会产生奇怪的500响应.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有