Załóżmy, że mam prostą stronę internetową z obrazem svg:
<img src="foobar.svg" alt="not working" />
Jeśli utworzę tę stronę jako statyczną stronę HTML i wyświetlę ją bezpośrednio, wyświetli się svg. Jeśli wpiszę adres tego pliku svg - zostanie wyświetlony.
Ale kiedy utworzę to jako stronę .aspx i uruchamiam dynamicznie z Visual Studio, otrzymuję alt
tekst. Jeśli wpisuję adres tego pliku SVG (z localhost, a nie jako plik lokalny) - przeglądarka próbuje go pobrać zamiast wyświetlać.
Zdefiniowałem już typ MIME w IIS (dla całego serwera - „image / svg + xml”) i zrestartowałem IIS. Taki sam efekt jak poprzednio.
Pytanie: co powinienem zrobić więcej?
Aktualizacja
WireShark nie działa (jest w dokumentacji), próbowałem również RawCap, ale nie mogę wyśledzić mojego połączenia (dziwne), na szczęście Fiddler pracował:
Od klienta:
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
Odpowiedź z serwera:
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. ***
Dla przypomnienia, tutaj przydatne pytania i odpowiedzi dotyczące Fiddlera: /programming/826134/how-to-display-localhost-traffic-in-fiddler-while-debugging-an-asp-net-applicati
źródło
<img src...
jak pokazano powyżej, aspx jest „tłumaczony” na pełną stronę HTML, ale wysyłanie całej zawartości (HTML, a następnie SVG) jest wykonywane przez IIS.Odpowiedzi:
Ze śladu Fiddlera wynika, że serwujesz swoje strony za pomocą wbudowanego serwera WWW Visual Studio:
Gdyby to było obsługiwane przez IIS7, zobaczylibyśmy:
Wbudowany serwer sieci Web Visual Studio ma ograniczony zestaw typów MIME, które może obsługiwać i nie ma wiedzy o typach MIME ustawionych dla IIS7. Jakiś czas temu napisałem odpowiedź na podobny problem dotyczący przepełnienia stosu:
Wbudowany serwer obsługuje twoje
.svg
plik jako:To prawdopodobnie powoduje, że przeglądarka wyświetla monit o pobranie.
W Visual Studio sprawdź, czy korzystasz z IIS Express, otwierając właściwości projektu witryny i wybierając kartę „Internet” z pionowej listy kart:
Jeśli nie masz zainstalowanego programu IIS 7.5 Express, możesz go pobrać tutaj:
Aby w pełni wykorzystać zalety programu Visual Studio 2010 z dodatkiem Service Pack 1:
Po zakończeniu możesz dodać
.svg
typ MIME doweb.config
pliku aplikacji :źródło
Jak wspomniano powyżej, Cassini ignoruje te ustawienia w web.config, więc zamiast tego należy użyć IIS Express (w ustawieniach projektu VS) /programming/5924647/setting-mime-types-using-the-asp- serwer rozwoju sieci
Aby uzyskać więcej informacji na temat konfigurowania typów MIME za pomocą interfejsu użytkownika administratora lub przy użyciu web.config dla IIS lub IIS Express, patrz: http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4- in-iis-for-a-website-or-global / and http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4-to-web-config-in-iis-7 /
źródło
Użyłem odpowiedzi Kev:
źródło
Moim obejściem tego problemu było utworzenie własnego httphandlera lokalnie, który zastąpił typ zawartości dla svg.
i w web.config dodałem:
dzięki temu rozwiązaniu nie musisz używać IIS express, możesz po prostu użyć zwykłego serwera programistycznego w Visual Studio 2010
źródło
Korzystam z IIS7 i udało mi się to naprawić, klikając prawym przyciskiem myszy serwer w IIS i wybierając właściwości. Następnie kliknąłem przycisk Typy MIME ... Następnie kliknąłem Nowy. Dla rozszerzenia wpisałem .svg. Dla MIME Type I wpisałem image / svg + xml. Następnie zapisałem wszystko i wykonałem polecenie iisreset z wiersza polecenia. Działa świetnie.
źródło
Jeśli masz dostęp do IIS, rozwiązuje to również problem: http://httpjunkie.com/2014/884/svg-no-iis/
źródło