Tôi có một webservice asp.net .asmx bản để xử lý yêu cầu từ một công cụ của bên thứ ba. Công cụ của bên thứ ba thực hiện yêu cầu POST http tới webservice để nhận thông tin người dùng. Tôi đang sử dụng IIS7asp.net xử lý webservice gzip nén yêu cầu
Chạy Fiddler với "Remove All Mã hoá" kiểm tra, tôi có thể thấy chức năng tất cả những gì gọi webservice và và đúng cách. Nếu tôi bỏ chọn "Remove All Encodings", cuộc gọi webservice sẽ thất bại với yêu cầu 400 Bad. Sự khác biệt mà tôi thấy là tiêu đề "Content-Encoding: gzip" đang được xóa bởi Fiddler và nội dung đang được giải nén.
Vì vậy, khi header Content-Encoding được lấy ra và nội dung được giải nén, chức năng webservice của tôi một cách hoàn hảo. Khi tiêu đề có mặt và nội dung được nén, webservice không thành công.
Làm thế nào tôi có thể một trong hai:
- Cấu hình webservice của tôi để nói với khách hàng rằng nó sẽ không chấp nhận yêu cầu nén (và hy vọng rằng công cụ của bên thứ ba tôn trọng đó)
- Decompress nội dung sớm trong asp.net xử lý
- Sửa webservice của tôi để làm việc với dữ liệu nén
cập nhật: để được rõ ràng, tôi không cần để định cấu hình mã hóa gzip trong Phản hồi, tôi cần xử lý Yêu cầu tới dịch vụ web của tôi được mã hóa gzip.
Cập nhật 2: Công cụ của bên thứ ba là plugin Salesforce.com Outlook. Vì vậy, tôi không có quyền truy cập để sửa đổi nó và nó được sử dụng bởi nhiều công ty khác mà không gặp rắc rối. Đó phải là điều tôi đang làm (hoặc không làm)
Cập nhật 3: Tôi tìm thấy một bài đăng here nói rằng IIS không hỗ trợ yêu cầu POST đến với dữ liệu nén, nó chỉ hỗ trợ phản hồi nén. Điều này có đúng không?
Tôi chưa làm việc với các dịch vụ web ASP Web Services (.asmx) trong một vài năm, nhưng bạn không thể truy cập vào các tiêu đề phản hồi bằng HttpContext.Current.Response.Headers? –
@ Florin, bạn đúng. Tôi đã có thể loại bỏ Header vi phạm trong chức năng PostRequestHandlerExecute VÀ loại bỏ tiêu đề Accelpt-Encoding khỏi yêu cầu đến trong hàm BeginRequest. Đã phải làm cả hai để làm cho nó hoạt động. – Geoff