Tambahkan pemetaan MIME di web.config untuk IIS Express

178

Saya perlu menambahkan pemetaan MIME baru untuk ekstensi file .woff ke IIS Express.

Jika saya menambahkan potongan berikut ke "applicationhost.config" dari IIS Express berfungsi dengan baik:

<staticContent lockAttributes="isDocFooterFileName">
    <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
    ...

Tapi saya sebenarnya ingin menambahkannya ke "web.config" saya sehingga tidak semua pengembang perlu mengubah "applicationhost.config" mereka secara lokal.

Jadi saya menghapusnya lagi dari file "applicationhost.config" dan menambahkan potongan berikut ke "web.config" proyek:

<system.webServer>
  ...
  <staticContent>
    <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
  </staticContent>
</system.webServer>

Sayangnya sepertinya tidak berfungsi seperti itu karena ketika saya mencoba mengakses file .woff saya berakhir dengan kesalahan HTTP 404.3.

Apa yang saya lakukan salah?

Martin Buberl
sumber

Jawaban:

309

Menempatkannya di "web.config" berfungsi dengan baik. Masalahnya adalah saya salah ketik MIME. Alih-alih font/x-woffatau font/x-font-woffharus application/font-woff:

<system.webServer>
  ...
  <staticContent>
    <remove fileExtension=".woff" />
    <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
  </staticContent>
</system.webServer>

Lihat juga jawaban ini mengenai jenis MIME: https://stackoverflow.com/a/5142316/135441

Pembaruan 4/10/2013

Spec sekarang menjadi rekomendasi dan tipe MIME secara resmi: application/font-woff

Martin Buberl
sumber
5
Menurut tautan, tipe mime yang diperbarui sekarang seharusnya adalah: application / font-woff (bukan aplikasi yang sudah tidak digunakan / x-font-woff).
longda
1
@longda Terima kasih atas petunjuk itu! Saya memperbarui jawaban untuk mencerminkan itu.
Martin Buberl
Apakah metode mendefinisikan jenis MIME khusus di web.config hanya berfungsi di IIS Express? Saya sudah mencobanya di web.config yang digunakan untuk IIS 6 dan tidak berfungsi (melempar 404). Jika saya menambahkan tipe MIME melalui Konsol Manajer IIS, itu berfungsi.
Walter Stabosz
@WalterStabosz Di atas berfungsi untuk IIS dan IIS Express 7+. Jika Anda menggunakan IIS 6, Anda perlu mengonfigurasi tipe mime di server, lihat mengonfigurasi tipe mime di IIS 6 .
Martin Buberl
59

Jika ada yang menemukan ini dengan kesalahan seperti Kesalahan: tidak dapat menambahkan entri kumpulan duplikat tipe 'mimeMap' dengan atribut kunci unik dan / atau skrip lain berhenti berfungsi saat melakukan perbaikan ini, mungkin membantu menghapusnya terlebih dahulu seperti ini:

<staticContent>
  <remove fileExtension=".woff" />
  <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
</staticContent>

Setidaknya itu menyelesaikan masalah saya

Elang
sumber
1
Terima kasih, itu menambah keamanan saat penggelaran :)
rdmptn
3
Tambahkan ini ke daftar fitur yang saya sukai tentang IIS.
QueueHammer
1
Jika server sudah berisi tipe mime, menentukannya di web.config mungkin menyebabkan pengecualian duplikat.
The Muffin Man
19
<system.webServer>
     <staticContent>
      <remove fileExtension=".woff"/>
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
      <mimeMap fileExtension=".woff2" mimeType="font/woff2" />
    </staticContent>
  </system.webServer>
Mohamed.Abdo
sumber
6

Saya tahu ini adalah pertanyaan lama, tapi ...

Saya baru saja memperhatikan contoh IISExpress saya tidak melayani file woff, jadi saya tidak mencari (Menemukan ini) dan kemudian menemukan:

http://www.tomasmcguinness.com/2011/07/06/adding-support-for-svg-to-iis-express/

Saya kira instal saya memiliki dukungan untuk SVG karena saya tidak punya masalah dengan itu. Tapi petunjuknya bisa dimodifikasi untuk woff:

  • Buka aplikasi konsol dengan hak administrator.
  • Navigasi ke direktori IIS Express. Ini hidup di bawah File Program atau File Program (x86)
  • Jalankan perintah:

    appcmd atur config / section: staticContent / + [fileExtension = 'woff', mimeType = 'application / x-woff']

Memecahkan masalah saya, dan saya tidak perlu mengacaukan konfigurasi payah (seperti saya harus menambahkan dukungan untuk PUTdan DELETEkata kerja). Yay!

JayC
sumber
4

Terima kasih untuk posting ini. Saya mendapatkan ini berhasil karena menggunakan template kumis dalam proyek MVC asp.net saya, saya menggunakan berikut ini, dan itu berhasil untuk saya.

<system.webServer>   
  <staticContent>
   <mimeMap fileExtension=".mustache" mimeType="text/html"/>
  </staticContent>
</system.WebServer>
Daman Singh
sumber
3

Saya tidak menggunakan IIS Express tetapi berkembang melawan IIS 7 Lengkap Lokal saya.

Jadi jika ada orang lain yang mencoba melakukannya, saya harus menambahkan tipe mime untuk woff melalui IIS Manager

Jenis Mime >> Klik Tambah tautan di sebelah kanan dan kemudian masukkan Ekstensi: .woff Jenis MIME: application / font-woff

Nathan Prather
sumber
Terima kasih, ini membuat saya lebih cepat dengan menjalankan proyek lagi. Semuanya baik-baik saja dengan IIS7.5 dengan saya, tapi saya mendapat Win8 dan IIS8, dan pemetaan di situs web.config sedang digandakan dengan konfigurasi IIS, menyebabkan kesalahan untuk setiap sumber daya statis yang diminta. Saya menghapus duplikat dan semuanya berjalan dengan baik sekarang.
rdmptn
3

Untuk mengatasi masalah ini, klik dua kali opsi konfigurasi "MIME Types" sambil memilih IIS root node di panel kiri dan klik tautan "Add ..." di panel Actions di sebelah kanan. Ini akan memunculkan dialog berikut. Tambahkan ekstensi file .woff dan tentukan "application / x-font-woff" sebagai tipe MIME yang sesuai:

masukkan deskripsi gambar di sini

Ikuti sama untuk woff2 dengan aplikasi / x-font-woff2

Tarun Gupta
sumber
0

Saya mengalami masalah dalam mendapatkan aplikasi ASP.NET 5.0 / MVC 6 saya untuk melayani jenis file biner statis atau menelusuri direktori virtual. Sepertinya ini sekarang dilakukan di Configure () saat startup. Lihat http://docs.asp.net/en/latest/fundamentals/static-files.html untuk primer cepat.

Brian Wirt
sumber