Tengo un archivo json en una carpeta de contenido dentro de mi proyecto asp.net:
<projectName>
\Content
NBCCJr.json
... y el código para acceder a él:
$.getJSON('~/Content/NBCCJr.json', function (data) {
$.each(data, function(i, dataPoint) {
// Bla
});
});
)
... pero no pasa nada cuando se llama al código; la consola del navegador dice, "No se pudo cargar el recurso: el servidor respondió con un estado de 404 (No encontrado)"
¿Por qué no se encuentra? ¿No es "tilde whack filename" la ruta correcta al archivo?
ACTUALIZAR
También lo probé con los "golpes" al revés:
$.getJSON('~\Content\NBCCJr.json', function (data) {
... y obtuve el mismo resultado (" No se pudo cargar el recurso: el servidor respondió con un estado de 404 (No encontrado) ")
ACTUALIZACIÓN 2
Luego probé sin un golpe antepuesto así:
$.getJSON('Content/NBCCJr.json', function (data) {
... y recibo este mensaje ambiguo en la consola:
*GET http://localhost:9702/Content/NBCCJr.json 404 (Not Found) jquery.js:8724
XHR finished loading: "http://localhost:9702/Content/NBCCJr.json".*
¿Entonces no se encontró y aún se cargó de todos modos?
ACTUALIZACIÓN 3
Cuando intenté navegar hasta el archivo en el navegador cambiando:
http://localhost:9702/Default.cshtml
...a:
http://localhost:9702/Content/NBCCJr.json
Recibí un mensaje informativo de WSOD de Vint Cerf, Tim Berners-Lee y / o Al Gore que decía:
Error HTTP 404.3 - No encontrado La página que está solicitando no se puede servir debido a la configuración de la extensión. Si la pagina es un script, agregue un controlador. Si el archivo debe descargarse, agregue un mapa MIME.
ACTUALIZACIÓN 4
Gracias a JAM, ahora está funcionando.
Tuve que agregar esto a Web.Config:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
fuente
Respuestas:
¿Ha intentado eliminar el
~
?Como en:
$.getJSON('/Content/dumboJr.json', function (data) { $.each(data, function(i, dataPoint) { // Bla }); }); )
Para permitir que IIS sirva archivos JSON, intente agregar esto a su web.config:
<staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent>
fuente
La solución es que necesita agregar el tipo de extensión de archivo json en Tipos MIME
Método 1
Vaya a IIS, seleccione su aplicación y busque tipos MIME
Haga clic en Agregar desde el panel derecho
Extensión de nombre de archivo = .json
Tipo MIME = aplicación / json
Después de agregar el tipo de archivo .json en Tipos MIME , reinicie IIS e intente acceder al archivo json
Método 2
Vaya a web.config de esa aplicación y agregue estas líneas en ella
<system.webServer> <staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent> </system.webServer>
fuente
Intente poner el archivo * .json en webRoot, no en una subcarpeta. Y luego haga referencia a él como:
$.getJSON('NBCCJr.json', function (data) {
Esto, por supuesto, requiere la inclusión previa y la creación de instancias del objeto del sistema jQuery de: jquery.min.js o la estructura JSON de: json2-1.0.min.js
fuente
Cambié .json a .txt y la solicitud funciona bien. No estoy seguro de las consecuencias que puede causar .txt.
fuente
Si lo usa
ASP.NET Core
, simplemente coloque el archivo,wwwroot
pero si usa elASP.NET
marco, esto permite la extensión JSON desde web.config de la siguiente manera:<staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent>
y
<location path="Content"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location>
fuente