Le problème, c'est que le IIS de Visual Studio Express 2013 pour Web ne permet pas le chargement de fichiers * .json. Lorsque j'essaie de charger un fichier * .json, je reçois un message 403 interdit. et une page d’aide expliquant comment configurer le IIS autorise le chargement des fichiers JSON, mais ne sait pas quoi faire avec ces informations/où IIS est même situé.
C'est la page d'erreur:
Erreur HTTP 404.3 - Introuvable La page que vous demandez ne peut pas être servie en raison 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.
Causes les plus probables: Il est possible qu'un mappage de gestionnaire soit manquant. Par défaut, le gestionnaire de fichiers statiques traite tout le contenu. La fonctionnalité que vous essayez d'utiliser peut ne pas être installée. Le mappage MIME approprié n'est pas activé pour le site Web ou l'application. (Avertissement: ne créez pas de mappe MIME pour le contenu que les utilisateurs ne doivent pas télécharger, tel que les pages .ASPX ou les fichiers .config.) Si ASP.NET n'est pas installé.
Ce que vous pouvez essayer: Dans system.webServer/handlers: assurez-vous que le gestionnaire attendu pour la page en cours est mappé. Portez une attention particulière aux conditions préalables (par exemple, runtimeVersion, pipelineMode, bitness) et comparez-les aux paramètres de votre pool d'applications. Portez une attention particulière aux erreurs typographiques dans la ligne de gestionnaire attendue. Veuillez vérifier que la fonctionnalité que vous essayez d'utiliser est installée. Vérifiez que la mappe MIME est activée ou ajoutez la mappe MIME du site Web à l'aide de l'outil de ligne de commande appcmd.exe. Pour définir un type MIME, exécutez la commande suivante dans le répertoire IIS Express: appcmd set config/section: staticContent// [fileExtension = 'chaîne', mimeType = 'chaîne']. La variable fileExtension est l'extension de nom de fichier et la variable mimeType est la description du type de fichier, par exemple, pour ajouter une mappe MIME à un fichier portant l'extension ".xyz": appcmd set config/section: staticContent/+ [fileExtension = '.xyz', mimeType = 'text/plain'] Avertissement: Assurez-vous que ce mappage MIME est nécessaire pour votre serveur Web avant de l'ajouter à la liste. Fichiers de configuration tels que .CONFIG ou pages de script dynamiques telles que .ASP ou .ASPX , ne doit pas être téléchargé directement et doit toujours être traité via un gestionnaire. D'autres fichiers, tels que des fichiers de base de données ou ceux utilisés pour stocker la configuration, tels que .XML ou .MDF, sont parfois utilisés pour stocker des informations de configuration. Déterminez si les clients peuvent télécharger ces fichiers. types avant de les activer.Installer ASP.NET.Vérifier le traçage des journaux pour plus d’informations sur cette erreur. Pour plus d'informations, cliquez ici.
Informations d'erreur détaillées: Notification du module StaticFileModule
Gestionnaire ExecuteRequestHandler Code d'erreur StaticFile 0x80070032 Adresse URL demandée http: //localhost:64107/Settings/Settings.json Chemin d'accès physique D:\GIT\RepoP_Paneon\Settings\Settings.json Logon Méthode Méthode Connexion anonyme
C:\Users\stefank\Documents\IISExpress\TraceLogFiles\REPOP_PANEONPlus d'informations: Cette erreur se produit lorsque l'extension de fichier de l'URL demandée concerne un type MIME non configuré sur le serveur. Vous pouvez ajouter un type MIME pour l'extension de fichier pour les fichiers qui ne sont pas des pages de script dynamiques, des fichiers de base de données ou des fichiers de configuration. Traitez ces types de fichiers à l'aide d'un gestionnaire. Vous ne devez pas autoriser le téléchargement direct de pages de script dynamiques, de bases de données ou de fichiers de configuration. Voir plus d'informations "
Après quelques recherches supplémentaires et des expériences, j’ai découvert que vous deviez définir les paramètres IIS dans le Web.config
.
Après avoir ajouté la configuration suivante:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
il fonctionne comme un charme.
Exemple de fichier d'installation complet:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
</system.webServer>
</configuration>
Il est préférable d’ajouter une balise remove au cas où IIS supporte json. C’est ma section web.config de mimeMap.
<system.webServer>
<staticContent>
<remove fileExtension=".woff" />
<remove fileExtension=".woff2" />
<remove fileExtension=".json" />
<mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
<mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
<system.webServer>
Il se peut que nous devions distinguer l'environnement de développement Visual Studio (avec IIS Express)] de local IIS et d'un serveur distant (comme Azure WebSites). Pour cibler spécifiquement = IIS Express, par exemple, nous modifions %USERPROFILE%\Documents\IISExpress\config\applicationhost.config
en dessous de system.webServer/staticContent
:
<mimeMap fileExtension=".json" mimeType="application/javascript" />
Je dois faire cette distinction car mon (intranet) IIS local a déjà le type mime JSON défini. Ainsi, lorsque je déploie sur des sites Web Azure, j'utilise cette transformation dans Web.Release.config
:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/javascript" xdt:Transform="Insert" />
</staticContent>
</system.webServer>
Aller à:
cd C:\Program Files\IIS Express
oucd C:\Program Files (x86)\IIS Express
Exécuter la commande:
appcmd set config /section:staticContent /+[fileExtension='JSON',mimeType='application/x-javascript']