Tôi biết có rất nhiều câu hỏi/câu trả lời, blog về điều này, không nói về Câu hỏi thường gặp của Telerik. Tuy nhiên tôi không thể tìm thấy điều này được chẩn đoán và giải quyết một cách thuần túy rõ ràng:Làm thế nào để sử dụng Fiddler với HttpClient?
Bối cảnh:
Tôi có một ứng dụng Web API, và tôi có một (unit test) khách hàng, trong đó sử dụng HttpClient để gửi yêu cầu vào API. Ứng dụng API Web nghe trong http://localhost:8631/ Đôi khi tôi sử dụng Fiddler để xem điều gì đang xảy ra.
Vấn đề:
giao thông giữa HttpClient tôi và Web API không bị bắt bởi Fiddler. Sau khi khởi chạy lưu lượng truy cập Fiddler vẫn OK, nhưng không được hiển thị trong Fiddler.
Diagnostics cho đến nay:
- Chú ý: Sử dụng bất kỳ trình duyệt và gửi yêu cầu để http://localhost:8631/đang làm việc, ý tôi là: giao thông bắt bởi Fiddler
- Cấu hình HttpClient một cách rõ ràng để sử dụng Fiddler như proxy không giúp được gì.
- Thay đổi HttpClient url http://localhost:8631/-http://localhost.fiddler: 8631/giúp, bất kể Proxy đã được cấu hình hay không.
Kết luận: Ít nhất trường hợp của tôi: Nó không phải là về HttpClient được cấu hình một cách rõ ràng để sử dụng Fiddler như proxy hay không. Đó là về hành vi localhost của HttpClient và/hoặc Fiddler.
Issue một lần nữa:
Người ta có thể đặt câu hỏi: Vấn đề được giải quyết, sau đó câu hỏi là gì? Vâng ...
Q1: này vẫn còn là một vấn đề đau đớn, bởi vì các url được mã hóa hoặc cấu hình ở đâu đó (Ý tôi là http://localhost:8631/hayhttp://localhost.fiddler: 8631 nên mỗi khởi động và dừng cáy nó phải Thêm: Kiểm tra trong nguồn để kiểm soát nguồn, và kiểm tra trên một máy khác bởi một đồng đội có thể gây ra vấn đề.Vì vậy: Có giải pháp nào ít đau đớn hơn cho việc này không?
Mã hóa cứng tên máy của tôi (cũng có có thể làm việc) gây ra cùng một nỗi đau và vấn đề khi làm việc trong một nhóm và sử dụng kiểm soát nguồn
Q2: Tại sao hành vi không nhất quán này: Tinh khiết http://localhost:8631/ hoạt động từ mọi trình duyệt chứ không phải từ HttpClient.
Tôi nghĩ rằng trả lời Q2 có thể khiến chúng tôi gần gũi hơn với cách giải quyết hữu ích hơn.
Mã trưng bày
// Using the following url w o r k s regardless of any proxy setting
// ...but it is a pain to hardcode or configure this and change depending on Fiddler is running or not
//private const string ApiUrl = "http://localhost.fiddler:8631/";
// This is not working regardless any proxy setting. Trafic bypasses Fiddler
private const string ApiUrl = "http://localhost:8631/";
protected HttpClient GetClient()
{
var httpClientHandler = new HttpClientHandler
{
// Does not work
//Proxy = new WebProxy("http://localhost:8888", false),
// Does not work
Proxy = WebRequest.DefaultWebProxy,
UseProxy = true
};
var client = new HttpClient(httpClientHandler)
{
BaseAddress = new Uri(ApiUrl)
};
// ...
Bạn * không * cần phải làm bất cứ điều gì để sử dụng Fiddler với HttpClient. Fiddler đặt/đặt lại proxy hệ điều hành mặc định để bạn * không * cần sửa đổi bất kỳ ứng dụng nào để sử dụng nó. Bạn chỉ có thể gặp sự cố nếu bạn ... cài đặt proxy hoặc chấm dứt Fiddler trước khi có cơ hội đặt lại proxy hệ điều hành, ví dụ: tắt –
Để được trợ giúp về các vấn đề cụ thể bạn cần phải đăng mã thực tế , bao gồm bất kỳ sửa đổi nào đối với các cài đặt proxy system.net trong app.config –
Bạn đã thử các tài liệu về fiddler cho .NET chưa? http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp –