86 votes

Pourquoi mon fichier json est-il introuvable ?

J'ai un fichier json dans un dossier Content de mon projet asp.net :

<projectName>
    \Content
        NBCCJr.json

...et le code pour y accéder :

$.getJSON('~/Content/NBCCJr.json', function (data) {
    $.each(data, function(i, dataPoint) {
        // Bla
      });
  });
)

...mais rien ne se passe lorsque le code est appelé ; la console du navigateur indique "Failed to load resource : the server responded with a status of 404 (Not Found)"

Pourquoi n'est-il pas trouvé ? Est-ce que "tilde whack filename" n'est pas la bonne façon d'accéder au fichier ?

MISE À JOUR

J'ai également essayé avec les "coups" à l'envers :

$.getJSON('~\Content\NBCCJr.json', function (data) {

...et a obtenu le même résultat (" Échec du chargement de la ressource : le serveur a répondu avec le statut 404 (Non trouvé). ")

MISE À JOUR 2

J'ai ensuite essayé de le faire sans le mot "whack" :

$.getJSON('Content/NBCCJr.json', function (data) {

...et j'obtiens ce message ambigu dans la console :

*GET http://localhost:9702/Content/NBCCJr.json 404 (Not Found) jquery.js:8724
XHR finished loading: "http://localhost:9702/Content/NBCCJr.json".*

Il n'a donc pas été trouvé, mais il a quand même été chargé ?

MISE À JOUR 3

Lorsque j'ai essayé de naviguer vers le fichier dans le navigateur en changeant :

http://localhost:9702/Default.cshtml

...à :

http://localhost:9702/Content/NBCCJr.json

J'ai reçu un message WSOD informatif de Vint Cerf, Tim Berners-Lee, et/ou Al Gore disant :

Erreur HTTP 404.3 - Non trouvé La page que vous demandez ne peut pas être servie à cause de la configuration de l'extension. Si la page est un script, ajoutez un gestionnaire. Si le fichier doit être téléchargé, ajoutez une carte MIME.

MISE À JOUR 4

Grâce au JAM, il fonctionne désormais.

J'ai dû ajouter ceci à Web.Config :

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

97voto

JAM Points 1520

Avez-vous essayé de retirer le ~ ?

Comme dans :

$.getJSON('/Content/dumboJr.json', function (data) {
    $.each(data, function(i, dataPoint) {
        // Bla
      });
  });
)

Pour permettre à IIS de servir des fichiers JSON, essayez d'ajouter ceci à votre web.config :

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

22voto

Kaushal Khamar Points 2047

La solution est d'ajouter le type d'extension de fichier json dans les types MIME.

Méthode 1

Allez dans IIS, sélectionnez votre application et recherchez les types MIME.

enter image description here

Cliquez sur Ajouter dans le panneau de droite

Extension du nom de fichier = .json

Type MIME = application/json

enter image description here

Après avoir ajouté .json type de fichier dans Types MIME , Redémarrer IIS et essayer d'accéder au fichier json


Méthode 2

Allez dans le fichier web.config de cette application et ajoutez-y les lignes suivantes

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

2voto

Paul Milleson Points 21

Essayez de placer le fichier *.json dans le webRoot, et non dans un sous-dossier. Et faites-y référence de la manière suivante

$.getJSON('NBCCJr.json', function (data) {

Cela nécessite bien sûr l'inclusion et l'instanciation préalables de l'objet système jQuery : jquery.min.js ou la structure JSON : json2-1.0.min.js

1voto

Pankaj Points 381

J'ai remplacé .json par .txt et la demande fonctionne correctement. Je ne suis pas sûr des conséquences que peut avoir le format .txt.

1voto

Moaz Salem Points 440

Si vous utilisez ASP.NET Core Il suffit de placer le fichier dans wwwroot mais si vous utilisez ASP.NET cela permet l'extension JSON à partir de web.config comme suit :

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

et

<location path="Content">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X