2017-07-06 20 views
6

(Basitleştirilmiş) ASP.NET Çekirdek Web API denetleyicisine sahibim. Hem GET hem de POST eylemleri kendi makinemde güzel çalışır. Ancak, Azure'a dağıtıldığında yalnızca GET eylemi düzgün şekilde çalışır. POST eylemi bir 404 ile sonuçlanır. Herhangi bir fikir?ASP.NET Çekirdek Web API HTTP POST, Azure'da 404 değerini döndürür

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; } 
    } 
    } 
} 

Tam .NET çerçevesini hedefleyen bir ASP.NET Çekirdek MVC uygulamasıdır. Bir Azure Web Uygulaması olarak dağıtılmıştır. Yerel makinemde ve Azure'da her iki eylemi de Postman kullanarak test ettim.

bir hata denetleyici meydana geldiği zaman, belirli koşullar altında görünen
+0

Web yapılandırmasını kontrol edin ve POST isteklerine izin verilip verilmediğini kontrol edin – Nkosi

+0

İçerik türünü, uygulama/json'dan (404 veren) başka bir şeye değiştirirseniz, 415 "Desteklenmeyen Ortam Türü" aldığımı öğrendim. Ama bu hala benim problemimi çözmüyor. –

+0

ModelBinder'ın '' 'InputModel''' sınıfına bağlayabildiği bir şey gönderiyor musunuz? –

cevap

2

ASP.NET, çekirdek yerine daha uygun bir 500 ara üzerinden bu yazının 404 verir: cevap olarak

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

, oldu Yanlış bir veritabanı bağlantı dizesi (başka bir ortama bir uygulama yayınladığınızda bir durum olabilir) neden olur, ancak başka bir şey olabilir.

Neden normal bir hata atmadığından emin değilsiniz, belki de özel bir hata sayfasına veya böyle bir şeye yönlendirmeyi dener.

Bu öneriyi kontrol etmek için, bir sorunu yalıtmak üzere POST denetleyicinizden her şeyi kaldırmayı deneyin. 404 döndürmezse, denetleyicideki bir şeyin bir istisna atar anlamına gelir.

+0

Teşekkürler. Bir süre oldu, ama evet, cevabınız, hatırladığım kadarıyla deneyimlediğim şeye mükemmel bir şekilde uyuyor :-) –

İlgili konular