IIS 7.5 bỏ qua các cài đặt HttpCompression trong web.config


8

Tôi đang cố gắng kích hoạt tính năng nén động cho loại mime application/json.

Trong apphost.config, tôi đã thực hiện thay đổi sau:

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />

Tôi cũng đã thử mở khóa phần bằng lệnh sau:

appcmd unlock config /section:system.webserver/httpcompression

Cài đặt web.config của tôi (giống như applicationhost.config nhưng có thêm mimetype):

    <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
        <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
        <staticTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/atom+xml" enabled="true" />
            <add mimeType="application/xaml+xml" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </staticTypes>
        <dynamicTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/json" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </dynamicTypes>
    </httpCompression>

Nhưng phản hồi không được nén. Tôi biết các cài đặt là chính xác vì nó hoạt động nếu tôi thêm trực tiếp mimetype vào apphost.config.

Tôi đã kích hoạt Truy tìm yêu cầu thất bại và không có lỗi nào được tạo ra.


Bạn cũng có thể thử thêm cái này vào dưới system.webServernút không:<urlCompression doStaticCompression="true" doDynamicCompression="true" />
tugberk

Thật không may điều này làm cho không có sự khác biệt. Ngoài ra, trong IIS 7.5, giá trị mặc định được doDynamicCompressionđổi thành true.
Ben

những thay đổi của bạn có hoạt động trong IIS Express không?
tugberk

không, phải làm điều tương tự (thay đổi trực tiếp apphost.config)
Ben

Bạn đã bao giờ giải quyết vấn đề này?
Mario

Câu trả lời:


3

Hãy thử thêm loại mime:

 <add mimeType="application/json; charset=utf-8" enabled="true" />

1

Tôi đang gặp vấn đề tương tự, ví dụ như cố gắng đưa IIS (IIS 10 trong trường hợp của tôi) vào gzip application/jsonnhưng đã phát hiện ra một cách giải quyết.

Tôi đã thử chỉnh sửa Applicationhost.config cũng như web.config mà không gặp may. IIS chỉ cần bỏ qua mọi cài đặt nén cho dữ liệu .json. Nó sẽ vui vẻ gzip bất kỳ mimetype nào khác mà bạn nói với nó nén. Vì vậy, tôi đã thay đổi mimetype thành text/jsontrong web.config và bây giờ tôi đã nén lại các reponses:

<system.webServer>
  <staticContent>
    <remove fileExtension=".json" />
    <mimeMap fileExtension=".json" mimeType="text/json" />
  </staticContent>
  <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
      <add mimeType="text/json" enabled="true"/>
    </dynamicTypes>
    <staticTypes>
      <add mimeType="text/json" enabled="true"/>
    </staticTypes>
  </httpCompression>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

Tất nhiên điều đó có thể phá vỡ những thứ khác - bởi vì bây giờ phản hồi của bạn đã Content-Type:text/json


0

Chỉ có thể sử dụng httpCompression từ web.config nếu bạn sử dụng IIS 10. Trên IIS 7.5, bạn sẽ phải sử dụng nó trên apphost.config.

Tôi cũng đã chiến đấu với nó cho đến khi tôi tìm thấy thông tin đó trên bài đăng này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.