2012-06-05 3 views
8

Bu screencast anlatıldığı gibi bir HttpResponseException yükseltmek için çalışıyorum (yaklaşık 1 dakika) kabul etmiyor HttpResponseExceptionHttpStatusCode

throw new HttpResponseException(HttpStatusCode.Unauthorized); 

Ama şu hatayı atar gibi uygulama derlemek olmaz:

The best overloaded method match for 'System.Web.Http.HttpResponseException.HttpResponseException(System.Net.Http.HttpResponseMessage)' has some invalid arguments 

msdn'deki belgeler, HttpResponseMessage enum değerini kabul eden bir kurucuya sahip olduğunu belirtir. http://msdn.microsoft.com/en-us/library/hh835324%28v=vs.108%29.aspx

Neyi eksik?

Teşekkür

+1

Gerçek kodunuzu da gönderebilir misiniz? –

+0

Elbette. Yayını güncelledim. – hofnarwillie

+0

HttpResponseException oluşturduğunuzda ve sağ tarafa bastığınızda, dokümanlar ya da yalnızca biri olarak iki kurucu görüyor musunuz? Eğer bir tane varsa, o zaman bir HttpResponseMessage ile sınırlıdır .... VEYA .... belgelerin farklı bir çerçeve sürümünü kullanıyorsunuz. –

cevap

11

Eğer RC kullanıyorsanız, bu değişti. Deneyin:

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized)); 
+0

Teşekkürler! Çok takdir edildi. – hofnarwillie

+0

Ve müşterime biraz mesaj göndermem gerekiyorsa? – Zote

+4

@Zote - Bir HttpResponseMessage değişkeni oluşturun, Content özelliğini ayarlayın ve ardından HttpResponseException öğesine geçin. Ya da gerçekten fantezi almak istiyorsanız, [özel hata türünü döndürme] konusunda bir yazı yazdım (http://smlync.tumblr.com/post/23104849655/returning-custom-error-data-type-in- asp-net-web aPI). – smlync

6

sadece bu sorunla kendim çalıştırmak zorunda, ben smlync tarafından sağlanan cevabını görmek için mutluyum olsa da, bu durumda API görmek için onun hayal kırıklığı daha ayrıntı çevrilmiş durumda! Özellikle bu istisna (her şeyden) üzerinden her kontrolörünü defalarca dolduğunda açıklama 'canavarca', doğru aşağıdaki eğilir IMHO,:

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)); 

yerine bu kullanıyor olabilir, belki bazılarınız etmeyi faydalı bulur iyi:

public class Http404NotFoundException : HttpResponseException 
{ 
    public Http404NotFoundException() 
     : base(new HttpResponseMessage(HttpStatusCode.NotFound)) { } 
} 

bu, sevgili ASP.NET WebAPI ekibi temizleyici olmaz: Eğer istiyoruz whereever yerleştirilen aşağıdaki ile

throw new Http404NotFoundException(); 

? Sadece bu durum kodu içinse, belki de ortak durum kodu eşdeğerlerinin bir çiftini atabiliriz.