Disons que j'ai une page Web simple avec une image svg:
<img src="foobar.svg" alt="not working" />
Si je crée cette page en tant que page html statique et que je la visualise directement, svg s'affiche. Si je tape l'adresse de ce svg - elle s'affiche.
Mais lorsque je crée cela en tant que page .aspx et que je le lance dynamiquement à partir de Visual Studio, j'obtiens du alt
texte. Si je tape l'adresse de ce svg (depuis localhost, pas en tant que fichier local) - le navigateur essaie de le télécharger au lieu de l'afficher.
J'ai déjà défini le type MIME dans IIS (pour l'ensemble du serveur - "image / svg + xml") et redémarré IIS. Même effet qu'auparavant.
Question: que dois-je faire de plus?
Mise à jour
WireShark ne fonctionnera pas (c'est dans la documentation), j'ai aussi essayé RawCap, mais il ne peut pas tracer ma connexion (bizarre), heureusement Fiddler a travaillé:
Du client:
GET http://127.0.0.1:1731/svg/document_edit.svg HTTP/1.1
Host: 127.0.0.1:1731
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Réponse du serveur:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Thu, 16 Feb 2012 11:14:38 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: application/octet-stream
Content-Length: 87924
Connection: Close
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:
*** FIDDLER: RawDisplay truncated at 128 characters. Right-click to disable truncation. ***
Pour mémoire, voici des questions / réponses utiles pour Fiddler: /programming/826134/how-to-display-localhost-traffic-in-fiddler- while- debugging- an-asp- net-applicati
la source
<img src...
comme indiqué ci-dessus, aspx est "traduit" en page HTML complète, mais l'envoi de tout le contenu (html, puis svg) est effectué par IIS.Réponses:
À partir de votre trace Fiddler, il semble que vous serviez vos pages à l'aide du serveur Web Visual Studio intégré:
Si cela était servi par IIS7, nous verrions alors:
Le serveur Web Visual Studio intégré ne dispose que d'un ensemble limité de types MIME qu'il peut servir et n'a aucune connaissance des types MIME que vous définissez pour IIS7. J'ai écrit une réponse à un problème similaire sur Stack Overflow il y a quelque temps:
Le serveur intégré sert votre
.svg
fichier en tant que:C'est probablement ce qui provoque le téléchargement du navigateur.
Dans Visual Studio, vérifiez que vous utilisez IIS Express en ouvrant les propriétés du projet de votre site et en sélectionnant l'onglet "Web" dans la liste des onglets verticaux:
Si vous n'avez pas installé IIS 7.5 Express, vous pouvez l'obtenir à partir d'ici:
Vous aurez besoin de Visual Studio 2010 Service Pack 1 pour profiter pleinement:
Une fois cela fait, vous pouvez ajouter le
.svg
type MIME auweb.config
fichier de votre application :la source
Comme mentionné ci-dessus, Cassini ignore ces paramètres dans web.config, il faut donc utiliser IIS Express à la place (dans les paramètres du projet VS) /programming/5924647/setting-mime-types-using-the-asp- net-development-server
Pour obtenir plus d'informations sur la configuration des types MIME à l'aide de l'interface utilisateur d'administration ou à l'aide de web.config pour IIS ou IIS Express, voir: http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4- in-iis-for-a-website-or-global / et http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4-to-web-config-in-iis-7 /
la source
J'ai utilisé la réponse Kev, par:
la source
Ma solution de contournement a été de créer mon propre httphandler localement qui a remplacé le type de contenu pour svg.
et dans web.config j'ai ajouté:
avec cette solution, vous n'avez pas besoin d'utiliser IIS express, vous pouvez simplement utiliser le serveur de développement normal dans visual studio 2010
la source
J'utilise IIS7 et j'ai pu résoudre ce problème en cliquant avec le bouton droit sur le serveur dans IIS et en choisissant des propriétés. Ensuite, j'ai cliqué sur le bouton Types MIME .... J'ai ensuite cliqué sur Nouveau. Pour l'extension, j'ai tapé .svg. Pour le type MIME, j'ai tapé image / svg + xml. J'ai ensuite enregistré tout et j'ai fait un iisreset à partir de l'invite de commande. Fonctionne très bien.
la source
Si vous avez accès à IIS, cela résout également le problème: http://httpjunkie.com/2014/884/svg-no-iis/
la source