IIS 7.5 mengabaikan pengaturan HttpCompression di web.config

8

Saya mencoba mengaktifkan kompresi dinamis untuk tipe mime application/json.

Di applicationHost.config, saya telah membuat perubahan berikut:

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

Saya juga mencoba membuka bagian dengan perintah berikut:

appcmd unlock config /section:system.webserver/httpcompression

Pengaturan web.config saya (sama dengan applicationHost.config tetapi dengan mimetype tambahan):

    <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>

Tetapi jawabannya tidak sedang gzip. Saya tahu pengaturannya benar karena berfungsi jika saya langsung menambahkan mimetype ke applicationHost.config.

Saya telah mengaktifkan Pelacakan Permintaan Gagal dan tidak ada kesalahan yang dihasilkan.

Ben
sumber
dapatkah Anda juga mencoba menambahkan ini di bawah system.webServersimpul:<urlCompression doStaticCompression="true" doDynamicCompression="true" />
tugberk
Sayangnya ini tidak ada bedanya. Juga, dalam IIS 7.5 nilai default untuk doDynamicCompressiondiubah menjadi true.
Ben
apakah perubahan Anda berfungsi di IIS Express?
tugberk
tidak, harus melakukan hal yang sama (ubah applicationHost.config secara langsung)
Ben
Apakah Anda pernah menyelesaikan masalah ini?
Mario

Jawaban:

3

Coba juga tambahkan jenis mime:

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

Saya mengalami masalah yang sama yaitu mencoba untuk mendapatkan IIS (IIS 10 dalam kasus saya) untuk gzip application/jsontetapi telah menemukan solusi.

Saya sudah mencoba mengedit ApplicationHost.config dan juga web.config tanpa hasil. IIS mengabaikan pengaturan kompres untuk data .json. Ini dengan senang hati akan mem-gim tipe mimet lain yang Anda beri tahu kompres. Jadi saya mengubah mimetype ke text/jsondalam web.config dan sekarang saya telah melakukan respons gzipped:

<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>

Tentu saja itu dapat merusak hal-hal lain - karena sekarang respons Anda telah Content-Type:text/json

Ilan
sumber
0

HttpCompression dari web.config hanya mungkin jika Anda menggunakan IIS 10. Pada IIS 7.5 Anda harus menggunakannya di appHost.config.

Saya juga berjuang sampai saya menemukan info di posting ini .

BornToCode
sumber