微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET Core Web API HTTP POST在Azure中返回404

我有这个(简化的)ASP.NET Core Web API控制器. GET和POST操作都可以在我自己的机器上很好地工作.但是,部署到Azure只有GET操作才能正常工作. POST动作导致404.任何想法?

namespace Foo
{
  using System;
  using System.Collections.Generic;
  using Microsoft.AspNetCore.Mvc;

  [RequireHttps]
  [Produces("application/json")]
  [Area("Foo")]
  [Route("[area]/Api/[controller]")]
  public class BarController : Controller
  {
    [HttpGet]
    public IEnumerable<string> Get()
    {
      return new[] {"Hello","World!"};
    }

    [HttpPost]
    public void Post([FromBody] InputModel model)
    {
    }

    public class InputModel
    {
      public int Foo { get; set; }
    }
  }
}

它是一个针对完整.NET框架的ASP.NET Core MVC应用程序.它部署为Azure Web App.我已使用Postman在本地计算机和Azure中测试了这两个操作.

解决方法

在某些情况下,当控制器发生错误时,ASP.NET核心返回404而不是更合适的500.看看这篇文章

ASP.NET Core 2.0 site POST request resulting in 404 on Azure

在答案中,它是由错误数据库连接字符串引起的(当您将应用程序发布到另一个环境时可能就是这种情况),但它可能是其他内容.

不知道为什么它不会抛出正常错误,也许它会尝试重定向自定义错误页面或类似的东西.

要检查此建议,请尝试从POST控制器中删除所有内容以隔离问题.如果它不会返回404,则意味着控制器中的某些内容会抛出异常.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐