我有这个(简化的)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] 举报,一经查实,本站将立刻删除。