2012-06-05 36 views
8

Tôi cố gắng để nâng cao một HttpResponseException như mô tả trong hình màn ảnh này (khoảng 1 phút trong)HttpResponseException không chấp nhận HttpStatusCode

throw new HttpResponseException(HttpStatusCode.Unauthorized); 

Nhưng ứng dụng này sẽ không biên dịch vì nó ném các lỗi sau:

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

Tài liệu về msdn cho biết nó có một hàm tạo chấp nhận hàm HttpResponseMessage enum. http://msdn.microsoft.com/en-us/library/hh835324%28v=vs.108%29.aspx

Tôi đang thiếu gì?

Cảm ơn

+1

Bạn cũng có thể đăng mã thực tế của mình không? –

+0

Chắc chắn. Tôi đã cập nhật bài đăng. – hofnarwillie

+0

Khi bạn tạo ra các HttpResponseException và nhấn paren quyền, bạn có thấy hai nhà xây dựng như các tài liệu hiển thị hoặc chỉ một? Nếu chỉ một, sau đó bạn được giới hạn trong một HttpResponseMessage .... HOẶC .... bạn đang sử dụng một phiên bản của khuôn khổ khác với tài liệu. –

Trả lời

11

Nếu bạn đang sử dụng RC, điều này đã thay đổi. Hãy thử:

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

Cảm ơn! Nhiều đánh giá cao. – hofnarwillie

+0

Và nếu tôi cần gửi một số tin nhắn cho khách hàng? – Zote

+4

@Zote - Tạo biến HttpResponseMessage, đặt thuộc tính Nội dung, sau đó chuyển vào HttpResponseException. Hoặc nếu bạn muốn thực sự ưa thích, tôi đã viết một bài đăng về [trả về một loại lỗi tùy chỉnh] (http://smlync.tumblr.com/post/23104849655/returning-custom-error-data-type-in- asp-net-web-api). – smlync

6

Có chỉ cần chạy vào vấn đề này bản thân mình, tôi vui mừng khi thấy câu trả lời cung cấp bởi smlync, tuy nhiên, thất vọng của mình để xem API trong trường hợp này đã chuyển sang cách rườm rà hơn! IMHO, các leans sau đối với các mô tả 'khổng lồ', đặc biệt là khi ngoại lệ này (trên tất cả) lấp đầy tất cả các bộ điều khiển nhiều lần:

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

tôi có thể sử dụng này để thay thế, có lẽ một số bạn sẽ tìm thấy nó hữu ích như tốt:

throw new Http404NotFoundException(); 

với những sản phẩm sau được đặt bất cứ nơi nào bạn muốn:

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

này sẽ không được sạch hơn, yêu quý đội ASP.NET WebAPI? Nếu chỉ cho mã trạng thái này, mặc dù có thể ném vào một vài khác của mã trạng thái tương đương rất phổ biến.

Các vấn đề liên quan