Mam plik json w folderze zawartości w moim projekcie asp.net:
<projectName>
\Content
NBCCJr.json
... i kod dostępu do niego:
$.getJSON('~/Content/NBCCJr.json', function (data) {
$.each(data, function(i, dataPoint) {
// Bla
});
});
)
... ale nic się nie dzieje po wywołaniu kodu; konsola przeglądarki wyświetla komunikat „Nie udało się załadować zasobu: serwer odpowiedział stanem 404 (Nie znaleziono)”
Dlaczego go nie znaleziono? Czy „tilde whack filename” nie jest prawidłową drogą do pliku?
AKTUALIZACJA
Próbowałem też z „waleniem” wstecz:
$.getJSON('~\Content\NBCCJr.json', function (data) {
... i otrzymałem ten sam wynik („ Nie udało się załadować zasobu: serwer odpowiedział statusem 404 (Nie znaleziono) ”)
AKTUALIZACJA 2
Potem spróbowałem tego bez dodanego uderzenia w ten sposób:
$.getJSON('Content/NBCCJr.json', function (data) {
... i otrzymuję w konsoli ten niejednoznaczny komunikat:
*GET http://localhost:9702/Content/NBCCJr.json 404 (Not Found) jquery.js:8724
XHR finished loading: "http://localhost:9702/Content/NBCCJr.json".*
Więc nie został znaleziony i mimo to załadowany?
AKTUALIZACJA 3
Kiedy próbowałem przejść do pliku w przeglądarce, zmieniając:
http://localhost:9702/Default.cshtml
...do:
http://localhost:9702/Content/NBCCJr.json
Otrzymałem informacyjną wiadomość WSOD od Vinta Cerfa, Tima Berners-Lee i / lub Ala Gore'a:
Błąd HTTP 404.3 - nie znaleziono Żądana strona nie może zostać obsłużona z powodu konfiguracji rozszerzenia. Jeśli strona jest skryptem, dodaj procedurę obsługi. Jeśli plik ma zostać pobrany, dodaj mapę MIME.
AKTUALIZACJA 4
Dzięki JAM teraz działa.
Musiałem dodać to do Web.Config:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
źródło
Odpowiedzi:
Czy próbowałeś usunąć
~
?Jak w:
$.getJSON('/Content/dumboJr.json', function (data) { $.each(data, function(i, dataPoint) { // Bla }); }); )
Aby umożliwić usługom IIS obsługę plików JSON, spróbuj dodać to do pliku web.config:
<staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent>
źródło
Rozwiązanie polega na tym, że musisz dodać typ rozszerzenia pliku json w typach MIME
Metoda 1
Przejdź do IIS, wybierz swoją aplikację i znajdź typy MIME
Kliknij Dodaj z prawego panelu
Rozszerzenie nazwy pliku = .json
Typ MIME = application / json
Po dodaniu .json typ pliku w typów MIME , Restart IIS i próby uzyskania dostępu do pliku json
Metoda 2
Przejdź do web.config tej aplikacji i dodaj do niej te linie
<system.webServer> <staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent> </system.webServer>
źródło
Spróbuj umieścić plik * .json w webRoot, a nie w podfolderze. Następnie odwołaj się do tego w taki sposób:
$.getJSON('NBCCJr.json', function (data) {
To oczywiście wymaga wcześniejszego włączenia i utworzenia instancji obiektu systemowego jQuery z: jquery.min.js lub struktury JSON z: json2-1.0.min.js
źródło
Zmieniłem .json na .txt i żądanie działa poprawnie. Nie jestem pewien, jakie konsekwencje może spowodować plik .txt.
źródło
Jeśli używasz
ASP.NET Core
, po prostu umieść plik,wwwroot
ale jeśli używaszASP.NET
frameworka, pozwala to na rozszerzenie JSON z web.config w następujący sposób:<staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent>
i
<location path="Content"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
źródło