2017-07-06 64 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

謝謝。這是一段時間,但是,是的,你的回答與我所經歷的完全吻合,據我所知:-) –