.Json dosyasının ASP.NET ile indirilmesine nasıl izin verilir


125

* .Json dosyalarının eski bir ASP.NET sitesinden indirilmesini nasıl etkinleştirebilirim (IIS6 inanıyorum)?

JSON dosyası yerine 404 sayfası alıyorum.

Bir web.config dosyası oluşturmam gerekiyor mu? İçinde ne var?


1
Muhtemelen bunun için bir MIME türü eklemeniz gerekiyor.
vcsjones

1
Bir javascript'te kullanmak veya bir hd'ye kaydetmek için mi?
Remy

Ona jQuery.ajax aracılığıyla erişmek istiyorum (url: ...
Lea Hayes

2
Yerel IIS bir listeye sahip olduktan sonra bunu eklemek, bir sonraki dağıtımınızda yinelenen bir listeden 500 sunucu hatası atabilir, böylece onu yorumlayabilir.
Tom Mallard

Yanıtlar:


118

JSON MIME türünü IIS 6'ya ekleyin. MSDN'nin MIME Türlerini Yapılandırma (IIS 6.0) bölümündeki yönergeleri izleyin .

  • Uzantı: .json
  • MIME türü: uygulama / json

Değişiklikten sonra IIS'yi yeniden başlatmayı unutmayın.

GÜNCELLEME: IIS7 ve daha yeni sürümlerde bunu yapmanın kolay yolları vardır. Operasyon özellikle IIS6 yardımı istedi, bu yüzden bu yanıtı olduğu gibi bırakıyorum. Ancak bu yanıt, IIS6 artık çok eski olmasına rağmen hala çok fazla trafik alıyor. Umarım daha yeni bir şey kullanıyorsunuzdur, bu yüzden daha yeni bir IIS7 veya daha yeni bir sürüme sahipseniz, bu yeni sürümler için daha basit bir çözüm için aşağıdaki @ ProVega'nın cevabına bakın.


1
Şerefe ama bu, web.config veya global kod dosyası dışında hiçbir şeye erişimi olmayan paylaşılan bir barındırma paketinde
Lea Hayes

IIS 6.0 ayarlarına erişiminiz yoksa ve sağlayıcınızın desteği sizin için MIME türünü eklemeyecekse, sağlayıcıları veya sunuyorsa bu sağlayıcıdaki IIS 7.0 ile daha yeni sunuculara geçmeniz gerekecektir. bunu destekleyin.
Jon Adams

1
Evet, ASP.Net dosyayı bir ASPX işleyicisi veya hatta basit bir sayfa aracılığıyla aktarabilir, ancak bu isteği ASP.Net'e iletmeyeceği için URL'de .json dosya türünü kullanamazsınız. Çalışma süresi. ASPX çalışma zamanından geçen bir şey olması gerekecek. IIS ayarlarına erişiminiz yoksa, gibi mevcut uzantılardan biri olması gerekecektir .ASPX. Yine, IIS7 ile bir sunucuya geçiş, çok daha fazla ve daha kolay çözüm sunar.
Jon Adams

1
IIS'yi tamamen yeniden başlatmak yerine, uygulama havuzunu yeniden başlatmak yeterli olmalıdır (benim durumumdaydı).
kltft

1
@kltft Doğru, bir uygulama havuzunun yeniden başlatılması güncellemeyi tetikleyecektir, ancak elbette yalnızca bu havuz için. Bu adımlar, ayarı herkes için değiştirmeyi içerir ve bunların tutarsız bir ortamda olması daha sonra kolayca kafa karışıklığına yol açabilir. Güvenlik ve akıl sağlığı için tüm iis sürecini yeniden başlatmanızı tavsiye ederim. Ancak, herkes artıları / eksileri kabul ederse, bir uygulama havuzunun yeniden başlatılması işe yarayabilir.
Jon Adams

211

Sitenize manuel olarak destek eklemek istiyorsanız, system.webServer bölümündeki web.config dosyanıza şunları ekleyebilirsiniz :

<staticContent>
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

Bu, IIS altında "yerel" bir yapılandırma ekleyecektir. Bu, IIS6'da çalışmaz, ancak IIS7 ve daha yeni sürümlerde çalışır.


6
Cevabınız tam web.configyolu içerecek şekilde güncellendi .
GFoley83

Hayat kurtarıcı, Teşekkür ederim :)
Gaurav123

1
Bazı nedenlerden dolayı, bu tüm sitemi mahvetti - css artık çalışmıyor!
TheJeff

@TheJeff - bu bana oldu, ancak iki staticContent mimeMap ekledim, biri JSON için (gerekli) ve biri CSV için (artık, gerekli olduğunu varsaydım, ancak IISExpress applicationConfig zaten CSV'ye sahipti). Bu nedenle herhangi bir statik dosyaya erişmeyi denediğimde bu hatayı aldım: Cannot add duplicate collection entry of type 'mimeMap' with unique key attribute 'fileExtension' set to '.csv' Yinelenen dosyayı kaldırdıktan sonra sorun yok.
The Red Pea

1
Bu, yerel olarak çalışırken sorunu çözecektir, ancak canlı yayın yaparken dikkatli olun. MimeMap zaten IIS'de genel olarak yapılandırılmışsa, 500 hata alırsınız. Bu durumda, bu parçayı web.config dosyanızdan kaldırmanız yeterlidir.
Evan

20

Çözüm, MIME Türlerine json dosya uzantısı türü eklemeniz gerektiğidir

Yöntem 1

IIS'ye gidin, Uygulamanızı seçin ve MIME Türlerini Bulun

görüntü açıklamasını buraya girin

Sağ panelden Ekle'ye tıklayın

Dosya Adı Uzantısı = .json

MIME Türü = uygulama / json

görüntü açıklamasını buraya girin

MIME Türlerine .json dosya türünü ekledikten sonra , IIS'yi yeniden başlatın ve json dosyasına erişmeyi deneyin


Yöntem 2

Bu uygulamanın web.config dosyasına gidin ve bu satırları ona ekleyin

 <system.webServer>
   <staticContent>
     <mimeMap fileExtension=".json" mimeType="application/json" />
   </staticContent>
 </system.webServer>

15

Mime türü için destek eklerken (@ProVega tarafından önerildiği gibi), en iyi uygulama türü eklemeden önce kaldırmaktır - bu, tür için desteğin zaten mevcut olduğu sunuculara dağıtılırken beklenmeyen hataları önlemek içindir, örneğin:

<staticContent>
    <remove fileExtension=".json" />
    <mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

Yalnızca mimeMap'i eklediğinizde, bazen css stillerinizi kaldırır, bu nedenle doğru yol önce onu kaldırmaktır, çok teşekkürler
sgrysoft

IIS7 C:\Windows\System32\inetsrv\configdosyasındaki yapılandırma dosyasının yolu : applicationHost.config
OO

5

Sadece bu sorunu yaşadım, ancak IIS Express için yapılandırmayı bulmam gerekti, böylece mime türlerini ekleyebildim. Benim için, konumunda bulunuyordu C:\Users\<username>\Documents\IISExpress\config\applicationhost.configve oraya doğru "mime haritası" nı ekleyebildim.


IIS Express aracılığıyla benim için çalışmamasının nedeni bu olabilir. Ne yazık ki bu, her dev makinesinde yapılandırmak isteyeceğim bir şey değil, bu yüzden json yapılandırma dosyaları için .js uzantısına bağlı kalmanızı tavsiye edeceğim gibi görünüyor.
jpierson


@SimchaKhabinsky Benim için web.config yeterli değildi.
Jean-Bernard Pellerin

3
Web.config yeterli değilse, daha önce bu satırı eklemeniz gerekebilir <mimeMap>düğümü: <remove fileExtension=".json" />. Applicationhost.config (veya machine.config) 'e dokunmanız gerekmez. Bununla birlikte, sık sık yeni siteler oluşturuyorsanız ve her site için web.config dosyasını değiştirmek zorunda kalmak istemiyorsanız, bu dosyaları değiştirmek yararlı olabilir. Bu, geliştirme ortamları için işe yarayabilir, ancak üretim ortamlarında sık sık machine.config'e dokunamazsınız, bu yüzden yine de web.config dosyasında değişiklik yapmanızı tavsiye ederim.
gilly3

1
Teşekkürler @ gilly3 - removebenim için anahtar
buydu

0
  1. C: \ Users \ kullanıcı adı \ Documents \ IISExpress \ config konumuna gidin
  2. Applicationhost.config dosyasını Visual Studio veya favori metin düzenleyicinizle açın.
  3. MimeMap kelimesini arayın, çok sayıda bulmalısınız.
  4. Aşağıdaki satırı listenin en üstüne ekleyin:.
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.