2013-06-19 30 views
9

Làm cách nào để trả về HTTP 403 từ phương thức WebAPI? Tôi đã thử ném một HttpResponseException với HttpStatusCode.Forbidden và tôi đã thửTrả lại HTTP 403 theo phương thức WebAPI

return request.CreateErrorResponse(HttpStatusCode.Forbidden, pEx); 

Cả hai đều không hoạt động. Cả hai LUÔN đều trả về HTTP 200. Tôi thiếu gì? Nó phải là một cái gì đó đơn giản nhưng tôi không nhìn thấy nó.

+0

Bạn đã thử giải pháp ở đây chưa? http://stackoverflow.com/a/10658604/163495 – Richard

+0

http://stackoverflow.com/questions/17081826/net-web-api-throw-exception-return-response-return-error-response-for-404- 400-r – SimSimY

+2

bạn có thể chia sẻ thêm mã không ... chúng tôi không thể tạo lại vấn đề của bạn –

Trả lời

3

Bạn có thể gặp sự cố với cấu hình định tuyến của mình. Dưới đây là một mẫu làm việc. Đặt nó vào bộ điều khiển của bạn và xem nó có hoạt động hay không. Nếu không, hãy kiểm tra định tuyến của bạn bằng công cụ chẩn đoán (ví dụ: Trợ lý định tuyến Cobisi).

public HttpResponseMessage GetSomeString(int id) 
{ 
    // This method is not allowed! 
    return this.Request.CreateErrorResponse(HttpStatusCode.Forbidden, "This method is not allowed!"); 
} 
+1

Teoman, điều đó không hoạt động. Thật kỳ lạ, có vẻ như đó là một dạng tương tác với DotNetOpenAuth. Api web của tôi là một thiết bị đầu cuối được bảo mật với DotNetOpenAuth. Nếu tôi gọi phương thức của mình mà không trải qua quá trình xác minh DotNetOpenAuth, tôi nhận được 403. Tuy nhiên, nếu tôi gọi nó bằng cách kiểm tra xác thực DotNetOpenAuth, và verificatoin không thành công (đó là tình huống tôi muốn trả về 403), cùng một dòng của mã bạn đề xuất chạy, tuy nhiên không có vấn đề gì tôi nhận được 200 trở lại. Vì vậy, tôi đoán tôi sẽ phải đăng lại bằng thẻ dotnetopenauth. –

+3

Lấy dàn diễn viên không hợp lệ từ HttpResponseMessage thành Chuỗi – user3953989

+0

cách sửa dàn diễn viên không hợp lệ thành chuỗi? – GreyCloud

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