2011-01-16 32 views
35

Tôi đang sử dụng IIS7 Express trong khi phát triển ứng dụng web của mình. Tôi cần phải sử dụng fiddler để điều tra một vấn đề và không thể tìm ra cách cấu hình mọi thứ để tôi có thể nhận được luồng HTTP. Có vẻ như IIS7 express sẽ chỉ lắng nghe trên localhost có nghĩa là tôi không thể truy cập luồng.Sử dụng Fiddler với IIS7 Express

Trả lời

52

Điều này không liên quan gì đến IIS7 Express và mọi thứ liên quan đến thực tế bạn đang sử dụng loopback traffic.

Tham chiếu: https://www.fiddlerbook.com/fiddler/help/hookup.asp#Q-LocalTraffic

Nhấp vào Quy tắc> Tùy chỉnh quy tắc.

Cập nhật nộp Rules của bạn như vậy:

static function OnBeforeRequest(oSession:Fiddler.Session) 
{ 
    if (oSession.HostnameIs("MYAPP")) { oSession.host = "localhost:portnumber"; } 
} 

Sau đó, chỉ cần truy cập http://myapp trong trình duyệt của bạn.

Hoặc sử dụng địa chỉ http://localhost.fiddler/ và Fiddler sẽ sử dụng tên máy chủ localhost thay vì chuyển sang địa chỉ IP.

+0

Tôi đọc và nó không hoạt động. Tôi cho rằng điều này là do IIS7 Express chỉ lắng nghe trên localhost – Brettski

+3

Xin chào Eric và Brettski, Brettski là chính xác, tôi đã thực sự tìm thấy cùng một vấn đề với IIS Express. Dường như chỉ giám sát tên máy chủ "localhost" không lưu lượng truy cập đến 127.0.0.1.Tôi đã có một vấn đề tương tự mà tôi đăng về trên StackOverflow gần đây http://stackoverflow.com/questions/4709014/using-custom-domains-with-iis-express –

+1

Dường như nó phải được chạy dưới quyền quản trị và bạn phải đi vào và sửa đổi các ràng buộc. Tôi không hiểu tại sao bất kỳ điều này là cần thiết vì Cassini dễ dàng thực hiện điều này. Tại sao IIS Express không thể giám sát cổng trên 127.0.0.1 mà không có tiêu đề máy chủ "localhost". –

0

Bạn có thể sử dụng chức năng giả mạo giữa proxy và máy khách của mình. Điều này có nghĩa là bạn khởi động fiddler, và sau đó truy cập vào máy chủ bằng cách sử dụng cổng của fiddler thay vì cổng thông thường (mặc định cho fiddler2 là 8888 tôi nghĩ). Nếu bạn cần gỡ lỗi máy chủ "sống" so với các khách hàng thực, bạn có thể thay đổi liên kết IIS từ: 80 thành cái gì đó khác và đặt proxy của fiddler trên cổng 80.

EDIT: Nhân tiện, theo mặc định fiddler2 thay đổi cài đặt proxy trên trình duyệt của bạn để chúng truy cập mọi thứ qua fiddler anyway (trên máy mà chỉ có trình cài đặt được cài đặt)

9

Một biến thể hữu ích của câu trả lời của Eric (được chỉnh sửa bởi Brett) sẽ là sử dụng oSession.port để tạo oSession.host. Với sự thay đổi nhỏ này, nếu người dùng cần nắm bắt lưu lượng truy cập IIS express trên http://localhost:12345, họ có thể sử dụng http://iisexpress:12345. Điều đó sẽ giúp bạn dễ dàng nắm bắt lưu lượng truy cập cho các trang web với các cổng ngẫu nhiên như được tạo bởi WebMatrix và VS. Tôi đã thử nó với IE và Firefox và nắm bắt lưu lượng truy cập IIS Express rất dễ dàng. Fiddler rocks !.

static function OnBeforeRequest(oSession:Fiddler.Session) 
{ 
    //... 
    // workaround the iisexpress limitation 
    // URL http://iisexpress:port can be used for capturing IIS Express traffic 
    if (oSession.HostnameIs("iisexpress")) { oSession.host = "localhost:"+oSession.port; } 
    //... 
} 
+0

Bạn cũng có thể muốn thêm điều này: 'oSession.utilReplaceInResponse (" localhost: "+ oSession.port," iisexpress: "+ oSession.port);' – Gebb

3

Với phiên bản mới nhất của fiddler, bạn chỉ cần điều hướng đến localhost.fiddler: port. Tuy nhiên, làm điều đó một mình đã không giúp tôi và tôi vẫn bị truy cập bị từ chối khi sử dụng Windows Authentication. Để sửa lỗi này, tôi thấy cụm từ này blog: http://www.parago.de/2013/01/fiddler-and-the-401-unauthorized-error-with-asp-net-web-api-using-integrated-windows-authentication-wia/

Nói tóm lại, hãy tạo khóa này:

Đường dẫn chính HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa \ MSV1_0

Value Name BackConnectionHostNames

Loại giá trị REG_MULTI_SZ

Giá trị chuỗi localhost.fiddler

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