2016-04-12 15 views
0

Kısa süre önce bir müşteri için çalıştığım basit bir Web API hizmetiyle ilgili bir soruna girdim. Servis, bir GET veya bir POST kabul eder. POST yöntemi şöyle tanımlanır:ASP.Net Web API 2 POST'ta 404 döndürüyor (bazen)

public IHttpActionResult PostUpload(UploadModel model) 
{ ... } 

modeli şöyle görünür:

public class UploadModel 
{ 
    public Guid UserKey { get; set; } 
    public string OrgCode { get; set; } 
    public byte[] Export { get; set; } 
} 

müşteri o biz hizmetiyle etkileşim için inşa istemci programı ile sorun yaşıyorsanız başlamış ki bugün bildirdi. Program, diğer 200 servisinden bir durum kodu aldığında kayıt yapar. Müşteri programı çalıştırdığında, 404 - Bulunamadı. IIS oturumlarında, programın bir POST isteği gönderdiği ve URI'nın doğru olduğunu doğruladım.

Programı çalıştırdığımda, her zaman 200 durumunu alır.

Yöntemdeki kod yalnızca iki olası IHttpActionResult öğesinden birini döndürür: Sorun yoksa Tamam, aksi durumda InternalServerError().

Postman'ı kullanarak, UserKey, OrgCode ve Export parametreleri için çeşitli farklı kombinasyonlar/değerler göndermeyi denedim, ancak API'nın 200 veya 500 durumu dışındaki herhangi bir şeyi geri göndermesini alamıyorum. Müşteri ile aynı verileri kullanmayı denedim ve sonunda her zaman geçiyor.

Doğru yöntem tanımlayamıyor gibi bir yönlendirme sorunu gibi görünüyor, ancak sorunun ne olduğunu göremiyorum. Belli ki eksik olduğumu işaret eden birine minnettar olurum.

+0

: Sorunu sabit 100MB kadar taleplerini izin web config aşağıdaki ayarı

? Sözleşmeye dayalı yönlendirme veya özellik yönlendirme kullanıyor musunuz? – Nkosi

+0

Sözleşme temelli. Bir POST to/api/DataExports/Yükleme benim için bir 200, aynı uygulamayı kullanan ve aynı verileri gönderen müşteri için bir 404 döndürür. Bir sonraki adım, istekte bulunulan bir vekil veya bir şey olup olmadığını görmek için siteye ulaştığında istek bilgisini ele geçiriyor sanırım. –

cevap

0

Çözünürlüğü toplulukla paylaşma: Müşteriyle daha fazla iletişim kurduktan sonra, sınamak zorunda olduğum verilerin sahip olduğuyla aynı olmadığı ortaya çıkıyor. POST'ta gönderdiği veriler, gönderdiğimden çok daha büyüktü. Bu, geçmişte yaşadığım bir şey hakkında bir düşünceyi tetikledi. URI'ye ve yönlendirmeye çok odaklandım ve izin verilen maksimum yükleme boyutu hakkında düşünmediğim özel hata (404). Eğer yönlendirme yapılandırmasını tamamladıktan nasıl

<system.web> 
    <httpRuntime maxRequestLength="102400" /> 
</system.web> 
<system.webServer> 
    <security> 
     <requestFiltering> 
      <requestLimits maxAllowedContentLength="104857600" /> 
     </requestFiltering> 
    </security> 
</system.webServer> 
İlgili konular