IIS, Belirli Bir Dosya Uzantısı Sunamıyor


9

.JSON dosyalarını sunuyorum, ancak dosya olmasına rağmen, dosyaya erişildiğinde IIS 404 hatası atmaya devam ediyor. Dosyalardan birini .JS olarak yeniden adlandırmayı denedim ve işe yarıyor.

Hangi ayarın bu soruna neden olabileceğine dair herhangi bir işaret var mı?

Yanıtlar:


20

Varsayılan olarak, W2K3 ve üstündeki IIS, bildiği bir MIME türü olmayan dosyalar sunmaz (bunun yerine 404 hata döndürür).

Bu dosya türünü sunmasına izin vermek için IIS'ye bir MIME türü eklemeniz gerekir. Site düzeyinde veya sunucu düzeyinde ayarlayabilirsiniz.

Bunu sunucunun tamamı için ayarlamak için:

  • Sunucunun özelliklerini IIS Yöneticisi'nde açın ve MIME Türleri'ni tıklatın.
  • "Yeni" ye tıklayın. Uzantı için "JSON" ve MIME türü için "application / json" girin.

Yeni bir MIME türü ekledim, web sitesini yeniden başlattım, ancak hala 404. Yine de teşekkürler, bunun sorunlardan biri olabileceğini düşünüyorum.
Adrian Godong,

Hmm. Neyi değiştirdiğinizi bir kez daha kontrol edin. "Dosyayı yeniden adlandırdı ve işe yaradı" belirtisi bu davranışın klasik göstergesidir.
Evan Anderson,

Triple kontrol etti. Tüm sunucuyu yeniden başlatmanız gerekmediğini farz ediyorum, değil mi?
Adrian Godong,

Hmm ... O zaman ne yapacağınızı söyleyeceğim. Kendimi Windows Server 2003 SP2'nin temiz bir sanal makinesinde yaptım. "C: \ inetpub \ wwwroot" içinde bir "foo.json" dosyası oluşturan IIS'yi bir tarayıcıda " localhost / foo.json " a bastığımda 404 aldığımı doğruladım, ".JSON için MIME türünü ekledik "/" application / json "siteye girdi, sonra hala açık olan IE pencereme gittim ve F5'e basıp sayfa yükünü gördü. Bence senin de oyunda başka bir şeyin var.
Evan Anderson,

1
Ayrıca, Web Hizmeti Uzantılarının benim için bu işi yapmasına olanak sağladığından emin olmam gerekiyordu ...
gandalf

3

Ben de aynı problemi yaşadım. IIS, MIME türü filtreleme adı verilen bir şey yapar. Belirli bir dosya uzantısının MIME türünü bilmiyorsa, 404 hatası verir.

IIS <7'de: Site (veya sunucu) özelliklerini açın. Tıklayın HTTP Başlık sekmesi. Tıklayın MIME Türleri butonuna. MIME tipinde "application / octet-stream" dosya tipini * ekleyin.

IIS 7 için: IIS yöneticisini açın. Sunucuya veya web sitesine tıklayın . MIME Türleri özellik simgesini çift ​​tıklatın . Eylemler bölmesinde Ekle'ye tıklayın . "Dosya Adı Uzantısı" kutusunu * ile ve MIME Türü kutusunu "application / octet-stream" ile doldurun.


2

Tarayıcıda metin olarak görüntülemek için MIME türünü .json- IIS’deki text/jsonsiteye ekledim .


BU! BU! Bu!
Tschallacka

1

Cevapları bir daha genel cevapta birleştirmek için:

İşte ihtar geliyor:

  • Sürece bir komut işleyicisi (örneğin aktif içerik motoru, ASP / ASPX / PHP / Java / ISAPI / vs) bunlarla ilişkili
    • Bu IIS olarak nitelendirir anlamına gelir etkin içerik değil, statik dosyalar
  • Herhangi bir uzantı tarafından sunulan etkin içerik dosyalarının, Web Hizmeti Uzantıları kısıtlama listesinde izin verilen uzantıya sahip olması gerekir (aka IIS 7'deki ISAPI / CGI kısıtlamaları).
    • IIS 7'deki etkin içerik türünde bir 404 alıyorsanız, bu, işleyicinizin yüklü olmadığı anlamına da gelebilir - bu nedenle, gerçekten de bu dosya uzantısını destekleyen bileşeni yüklemeniz gerekir (örneğin, .aspx dosyaları bir 404, muhtemelen ASP.Net yüklü değil)

Bu tür bir sorun yaşıyorsanız, web sitenizin IIS 6 için neden içerik sunmadığını belirlemek için web sitesinin web günlüğü dosyalarını açın ve alt durum koduna (ör. 404 3) bakın veya

  • Başarısız İstek İzlemeyi kullanın
  • (veya sadece yerel konsoldaki ayrıntılı hataları)

IIS 7'de.


Bu "ihmal" anlam ifade etmiyor: "... bu, IIS'nin statik içerik değil aktif içerik olarak nitelendirdiği anlamına gelir" Web.config, json dosyalarını statik olarak ilan eder: <staticContent> <mimeMap fileExtension = ". Json" mimeType = "application / json" /> </staticContent>

"IIS, bir kod işleyicisi kendisiyle ilişkilendirilmedikçe, kendisiyle ilişkilendirilmiş bir MIME türüne sahip statik dosyalar sunmaz" yine de (IMO) gerçek bir ifade olarak çalışmaktadır. Onlara hizmet edemeyen birinin durumunda, sanki kendi tanım dosyalarında hiçbir yerde bu tanım yokmuş gibi geliyor. Belki de Windows kopyanız onlarınkilerden daha yenidir?
TristanK

0

Ben de bu problem vardı - ve json dosyasının saklandığı klasördeki dosya izinleri olduğu ortaya çıktı. Burada da benzer bir soruyu cevapladım .

Bu millet, MIME türünü eklemeniz gerektiğini söylemek için doğru.

MIME türü sunucudaki dosya uzantısını etkinleştirir ve Eşleme İşleyicisi IIS'ye bununla ne yapılacağını söyler.

Bu nedenle , Eşleme İşleyicisini de eklemelisiniz ve bunun için eşlemeyi işlemek için Klasik Asp adlı Windows Özelliğinin kurulu olması gerekir.

Mapping Handler'ın nasıl ekleneceği aşağıda açıklanmaktadır:

  1. IIS7 Yöneticisi'ni açın
  2. IIS Sunucusu'nun özelliklerine gidin (veya genel bir ayar istemiyorsanız yalnızca site)
  3. Tıklamak Handler Mappings
  4. Tıklamak Add a Script Map
  5. Özellikleri girin:
    • Yol İsteği: *.json
    • çalıştırılabilir: C:\WINDOWS\system32\inetsrv\asp.dll
    • İsim: JSON(istediğiniz her şeyi çağırabilirsiniz)
  6. Tamam'ı tıkladığınızda işlem tamamlanır. Çalışmaya başlaması gerekir ve bir IIS sıfırlama gerekmez.

Ayrıca, bazı insanlar mime tipi uygulama olarak `application / x-javascript 'kullanmanızı söyleyecektir, ancak JSON kendiliğinden javascript değildir (bunun yerine bir altkümedir) ve bu nedenle bunun yerine' application / json 'olmalıdır. JSON için IANA'ya kayıtlı bir medya türü olduğu için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.