2012-09-23 22 views
22

this blog post'da gördüm, ancak aslında bunun nasıl "etkinleştirileceğini" söylemiyor. Ve varsayılan olarak etkin değil gibi görünüyor.Request.CreateErrorResponse nerede?

Burada tanımlandığı gibi bir uzantı yöntemi olduğunu biliyorum: http://msdn.microsoft.com/en-us/library/hh835786(v=vs.108).aspx ancak buna nasıl erişebilirim? Request.CreateErrorResponse yazıyorsam, derleyici bunu tanımıyor.

Zaten using System.Net.Http.

+0

'Request' nedir? – SLaks

+0

Uygun montajlara referans eklediniz mi? –

+0

@SLaks: HttpRequestMessage. Bu neredeyse bir iskele ApiController. –

cevap

1

Hala yayın öncesi veya yayın sürümünü mi kullanıyorsunuz? Yayınlamadan hemen önce görünmeyen ve webapi sürümünün önceki sürümlerinde bulunmayan birkaç uzantı vardı. Bu onlardan biri olup olmadığından emin değilim, ancak sorununuza neden olan şey olabilir.

+0

VS2012 RC ile çalışmaya başladım ve daha sonra projemi yükselttim. Sahnelerin altında hangi etkinin olduğunu bilmiyorum ... Baştan başlamalı mıyım? –

+0

Beta/rc sürümlerinden son halka açık sürüme geçerken her zaman temizlemeye başladım, ancak sorununun çözülüp çözülmeyeceğini size söyleyemem. Yöntemi, ISense üzerinden görebiliyor ancak derleme sırasında görülemiyorsa, sürüm çatışması olabilir. .net reflektörü gibi bir şey var mı? Bunu yaparsanız, kullandığınız DLL'ye işaret edin ve System.Net.Http.HttpRequestMessageExtensions ve uzantı yöntemini bulabileceğinize bakın. Ayrıca, ben sadece kendi kendine barındırma sürece SelfHost.dll kullanmak için bir neden yoktur, belirtilen DLL'lerin bir noktaya işaret ediyorum. – AlexGad

+0

Teşekkürler. Projemi sıfırdan yeniden oluşturdum ve sorun ortadan kalktı. Bir sürü _other_ şeyi kırdı, ama bu sorun artık değil. :-) –

-1

En iyi tahminim, üçüncü bir derlemedir, başvurmadığınız üçüncü derleme, sorun budur.

Ne yazık ki bilgisayarıma erişemiyorum, telefonuma göz atıyorum, bu yüzden dosyayı sizin için izleyemiyorum. Dokümanlar göre System.Web.Http.SelfHost.dll içinde olmalıdır, bu yüzden sadece bu dosyayı bulmak için arama yapabilirsiniz.

3

İstek, ApiController sınıfının genel özelliği olup, bu denetleyicideki herhangi bir API eyleminde size sunulmalıdır. Ben uzak System.Net.Http kullanarak alırsak, İlginçtir ki

using System.Net; 
using System.Net.Http; 
using System.Web.Http; 


public class MyFirstApiController : ApiController 
{ 
    // GET 
    public HttpResponseMessage Get(int id) 
    { 
     return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "Some message here"); 
    } 
} 

;: Burada

public abstract class ApiController 
{ 
    ... 
    public HttpRequestMessage Request { get; set; } 
} 

benim için çalışan küçük bir kod örnektir deyim, İstek artık bir CreateErrorResponse() yöntemine sahip değil.

+1

Teşekkürler ... Gerçekten de olmalı. Ama değildi. Şimdi çözüldü - kabul edilen cevaba bakınız. System.Net.Http; 'kullanarak –

42

Bunu yayın sürümünde de gördüm. Doğru kullanma ifadeniz yoksa, hata olur. Sen gerekir: Zaten bu var

using System.Net.Http; 

bile:

using System.Web.Http.Controllers; 
+2

' yardımcı olur. VS'nin neden otomatik olarak eklememesini önerdiğinden emin değil. –

+1

System.Web.Http.Controllers kullanarak ekleme; 'yardımcı :) – Narayana

+2

@NikolaiSamteladze onun uzantıları olduklarından ve Visual Studio bunları bulmak için yeterince zeki değildir. – Peter

1

Dene: Zaten bu olmasa bile

using System.Net.Http; 

:

using System.Web.Http.Controllers; 

Bu benim için çalıştı. Önemli noktalara yanıt verilmesine rağmen,

1

.

Diğer bir olasılık, yanlış türde bir denetleyici seçmiş olmanız olabilir. MVC kumandanın size bu sorunu bulabilirsiniz

Request.CreateErrorResponse() 

Bir başka olasılık olamaz örtmek, bir Web API kontrolörü oluşturduk emin olun .