Angenommen, ich habe eine einfache Webseite mit einem SVG-Bild:
<img src="foobar.svg" alt="not working" />
Wenn ich diese Seite als statische HTML-Seite mache und sie direkt ansehe, wird svg angezeigt. Wenn ich die Adresse dieses SVG eingebe, wird es angezeigt.
Aber wenn ich diese Seite als .aspx-Seite erstelle und sie dynamisch in Visual Studio starte, erhalte ich alt
Text. Wenn ich die Adresse dieses svg (von localhost, nicht als lokale Datei) eingebe, versucht der Browser, es herunterzuladen, anstatt es anzuzeigen.
Ich habe bereits MIME-Typ in IIS definiert (für den gesamten Server - "image / svg + xml") und IIS neu gestartet. Gleicher Effekt wie zuvor.
Frage: Was soll ich mehr tun?
Aktualisieren
WireShark funktioniert nicht (es ist in der Dokumentation), ich habe auch RawCap ausprobiert, aber es kann meine Verbindung nicht nachvollziehen (ungerade), zum Glück hat Fiddler gearbeitet:
Vom Kunden:
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
Antwort vom Server:
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. ***
Hier finden Sie nützliche Fragen und Antworten für Fiddler: /programming/826134/how-to-display-localhost-traffic-in-fiddler-while-debugging-an-asp-net-applicati
quelle
<img src...
wie oben gezeigt, aspx wird in die vollständige HTML-Seite "übersetzt", aber der gesamte Inhalt (HTML und dann SVG) wird von IIS gesendet.Antworten:
Aus Ihrer Fiddler-Ablaufverfolgung geht hervor, dass Sie Ihre Seiten mithilfe des integrierten Visual Studio-Webservers bereitstellen:
Wenn dies von IIS7 bereitgestellt würde, würden wir sehen:
Der integrierte Visual Studio-Webserver verfügt nur über eine begrenzte Anzahl von MIME-Typen, die bereitgestellt werden können, und hat keine Kenntnis der MIME-Typen, die Sie für IIS7 festgelegt haben. Ich habe vor einiger Zeit eine Antwort auf ein ähnliches Problem bei Stack Overflow geschrieben:
Der eingebaute Server dient Ihrer
.svg
Datei als:Dies ist wahrscheinlich der Grund, warum der Browser zum Herunterladen auffordert.
Überprüfen Sie in Visual Studio, ob Sie IIS Express verwenden, indem Sie die Projekteigenschaften Ihrer Site öffnen und in der Liste der vertikalen Registerkarten die Registerkarte "Web" auswählen:
Wenn Sie IIS 7.5 Express nicht installiert haben, können Sie es hier herunterladen:
Sie benötigen Visual Studio 2010 Service Pack 1, um alle Vorteile nutzen zu können:
Wenn Sie dies getan haben, können Sie den
.svg
MIME-Typ zurweb.config
Datei Ihrer Anwendung hinzufügen :quelle
Wie oben erwähnt, ignoriert Cassini diese Einstellungen in web.config, sodass stattdessen IIS Express verwendet werden muss (in den VS-Projekteinstellungen). Https://stackoverflow.com/questions/5924647/setting-mime-types-using-the-asp- Net-Development-Server
Weitere Informationen zum Konfigurieren von MIME-Typen über die Administratoroberfläche oder über web.config für IIS oder IIS Express finden Sie unter: http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4- in-iis-for-a-website-or-global / und http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4-to-web-config-in-iis-7 /
quelle
Ich habe Kev Antwort verwendet, von:
quelle
Meine Problemumgehung bestand darin, einen eigenen lokalen httphandler zu erstellen, der den Inhaltstyp für svg überschrieb.
und in der web.config habe ich hinzugefügt:
Mit dieser Lösung müssen Sie nicht IIS Express verwenden, sondern können einfach den regulären Entwicklungsserver in Visual Studio 2010 verwenden
quelle
Ich verwende IIS7 und konnte dies beheben, indem ich mit der rechten Maustaste auf den Server in IIS klickte und Eigenschaften auswählte. Dann habe ich auf die Schaltfläche MIME Types ... geklickt. Ich habe dann auf Neu geklickt. Für die Erweiterung habe ich .svg eingegeben. Für den MIME-Typ habe ich image / svg + xml eingegeben. Ich habe dann alles gespeichert und an der Eingabeaufforderung ein iisreset durchgeführt. Hat super funktioniert.
quelle
Wenn Sie Zugriff auf IIS haben, behebt dies auch das Problem: http://httpjunkie.com/2014/884/svg-no-iis/
quelle