2017-07-06 124 views
6

我有此(简化的)ASP.NET Core Web API控制器。 GET和POST操作都可以在我自己的机器上很好地工作。但是,仅部署到Azure的GET操作才能正常工作。 POST操作会导致404错误。任何想法?ASP.NET Core Web API HTTP POST在Azure中返回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上测试了这两个操作。

+0

检查你的网络配置,看看是否允许POST请求 – Nkosi

+0

如果我将内容类型改为除application/json(它给出了404)之外的任何内容,我发现我得到415“Unsupported Media Type”。但是这仍然不能解决我的问题。 –

+0

您是否在发布ModelBinder可以绑定到InputModel类的东西? –

回答

2

当一个控制器出现错误似乎在某些情况下,ASP.NET核心返回404而不是更合适的500检查这个职位:

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

在了答案,这是由错误的数据库连接字符串引起(这可能是您将应用程序发布到其他环境时的情况),但可能是其他情况。

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

要检查这个建议,尝试从POST控制器中删除一切隔离问题。如果它不会返回404,则意味着控制器中的某些内容会引发异常。

+0

谢谢。这是一段时间,但是,是的,你的回答与我所经历的完全吻合,据我所知:-) –