5

üzerinde GET gibi işlenmiş bir WebApi denetleyicisi oluşturuyor ve kayıt için yeni bir kullanıcı göndermek için bir HttpPost isteği kullanmaya çalışıyorum. Bu, localhost'umda gayet iyi çalışıyor, ancak Azure'a yayınladığımda, iletiyle ilgili bir 405 yöntemine izin verilmeyen bir hata alıyorum: "İstenen kaynak http yöntemini 'GET'" desteklemiyor. HTTP POST yöntemi WebApi

Ben eylemleri kontrol etmek için postacı kullanın ve bu yüzden aşağıdaki gibidir isteği, görmek için kod oluşturmak kullandı:

POST /api/account/register/student HTTP/1.1 
Host: www.l3cture.com 
Content-Type: application/json 
Cache-Control: no-cache 
Postman-Token: 27c1b2ab-96ad-4a99-b271-4030402768e7 

yüzden istek bir POST olduğunu açıkça görebilirsiniz. Ve aşağıdaki onun nitelikleri ile kontrolör eylem kodu (hayır modeller yayınlanır böylece Şu anda bunu basitleştirdik ve aynı davranış oluşur)

[HttpPost] 
[Route("register/student")] 
[AllowAnonymous] 
public async Task<IHttpActionResult> PostStudent(/*RegisterStudent model*/) 
{ 
    //Implementation of register 
    return Ok(); 
} 

Ben niteliklerin ad kontrol ve kaydetmemiz System.Web.Http, bu yüzden MVC ad alanı ile karıştırılmıyor.

İlginç olan, HttpGet yöntemini ve postacıyı kullanarak POST olarak değiştirdiğimde, 200 durum aldığımdır. Neredeyse HttpPost isteklerinin tümü benim denetleyicim tarafından HttpGet gibi ele alınıyor.

HttpPut ve HttpDelete'yi başka yerlerde kullandım ve hepsi iyi çalışıyor.

Bu sorunun nasıl çözüleceğinden emin değilim ve herhangi bir fikri olup olmadığını merak ediyordum? Lütfen açıklama için daha fazla kod göndermem gerekiyorsa bildirin. peşin

Teşekkür

+1

http yerine https kullandığımda işe yarar görünüyor. Bu kapatılabilir –

+0

Modelinizi Gönderi için Gönderiyor musunuz? Yöntem parametrenizde [FromBody] özniteliğini kaçırdığınızı düşünün. –

+0

[FromBody] 'yi denedim ve işe yaramadı. Her ne kadar https belirterek denedim ve işe yarıyor gibi görünüyor. Sadece bir süredir aptal oldum –

cevap

10

yerine Https arasında, Http kullanıyordum çıkıyor.

+0

Eğer gerçekten bu konuyla ilgili bir şey olsaydı, bu sorunun cevabını bulmak için diğer kullanıcılara izin vermek için bu cevabı (soldaki onay işareti) kabul etmelisiniz. –

+0

Evet üzgünüm, gönderdiğimde yapamam, iki gün beklemem gerekiyordu. Hatırlattığın için teşekkürler –

+0

Endişeye gerek yok! :) –