2012-10-19 6 views
8

Có thể đăng nhập mọi yêu cầu HTTP được thực hiện cho ASP.NET Web API, ngay cả khi yêu cầu không đúng định dạng hoặc vì một số lý do khác không định tuyến đến một trong các bộ điều khiển.Làm cách nào để đăng nhập yêu cầu HTTP thô trong ASP.NET Web API cho dù nó có định tuyến đến bộ điều khiển không?

Ví dụ: nếu phương thức POST có mô hình Đặt hàng làm thông số của nó, yêu cầu không chính xác sẽ ngăn không cho nó tiếp cận phương thức POST của bộ điều khiển. Tôi muốn cảnh báo một ai đó để các hành động có thể được thực hiện để ngăn chặn những thất bại trong tương lai.

Có cách nào để nắm bắt các yêu cầu này ngược dòng hơn từ bộ điều khiển không?

Trả lời

3

Hoặc sử dụng Tracing, bạn cần phải thực hiện ITraceWriter như hình dưới đây

http://www.asp.net/web-api/overview/testing-and-debugging/tracing-in-aspnet-web-api

Hoặc thực hiện xử lý tin nhắn

http://www.strathweb.com/2012/05/implementing-message-handlers-to-track-your-asp-net-web-api-usage/

http://www.asp.net/web-api/overview/working-with-http/http-message-handlers

nhắn xử lý cho phép bạn thay đổi thông điệp trước khi nói đến HttpControllerDispatcher, và do đó bạn có thể xử lý các vấn đề chung với việc chọn phương thức định tuyến và hành động.

Nhưng lần cuối đừng ngần ngại sử dụng tính năng ghi nhật ký AppFabric, khi bạn đang lưu trữ trên IIS, vì nó có thể cung cấp cho bạn thông tin khi có sự cố xảy ra trước khi yêu cầu đến ứng dụng web của bạn. Nó xử lý scenarions với các lỗi toàn cục trong ứng dụng web, ví dụ các lỗi với web.config.

2

Nếu bạn bật truy tìm trong ASP.NET Web API trên Tracing in ASP.NET Web API, cơ sở hạ tầng truy tìm được tích hợp sẽ ghi lại thông tin bạn đang theo dõi.

Trong trường hợp yêu cầu không đúng định dạng không thành công thương lượng nội dung, bạn sẽ thấy HttpError xảy ra trong DefaultContentNegotiator.

Dưới đây là một ví dụ về dấu vết đơn giản cho loại lỗi:

DefaultContentNegotiator;Negotiate;Type='HttpError', formatters=[JsonMediaTypeFormatterTracer, XmlMediaTypeFormatterTracer, FormUrlEncodedMediaTypeFormatterTracer, FormUrlEncodedMediaTypeFormatterTracer]

Các dấu vết nhà văn được đưa ra một TraceRecord như là đầu vào của nó, mà sẽ chứa các thông tin theo yêu cầu cũng như tùy chọn bất kỳ thông tin tùy chỉnh bạn có thể muốn sử dụng.

API Web sẽ sử dụng trình ghi vết mà bạn định cấu hình để theo dõi thông tin trong suốt vòng đời của yêu cầu. Bạn có thể sử dụng trình ghi dấu vết để theo dõi cả các sự kiện vòng đời cũng như mã điều khiển của riêng bạn.