Допустим, у меня есть простая веб-страница с изображением svg:
<img src="foobar.svg" alt="not working" />
Если я сделаю эту страницу как статическую html-страницу и просматриваю ее непосредственно, отображается svg. Если я наберу адрес этого svg - он отображается.
Но когда я делаю это как страницу ASPX и запускаю ее динамически из Visual Studio, я получаю alt
текст. Если я наберу адрес этого svg (с локального хоста, а не как локальный файл) - браузер пытается загрузить его вместо отображения.
Я уже определил тип MIME в IIS (для всего сервера - "image / svg + xml") и перезапустил IIS. Тот же эффект, что и раньше.
Вопрос: что мне делать больше?
Обновить
WireShark не будет работать (он есть в документации), я попробовал также RawCap, но он не может отследить мое соединение (странно), к счастью, Fiddler работал:
От клиента:
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
Ответ с сервера:
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. ***
Для записи вот полезные вопросы и ответы для Fiddler: /programming/826134/how-to-display-localhost-traffic-in-fiddler- while-debugging-an-asp-net- applicati
источник
<img src...
как показано выше, aspx «переводится» на полную HTML-страницу, но отправка всего содержимого (html, а затем svg) выполняется IIS.Ответы:
Из вашей трассировки Fiddler видно, что вы обслуживаете свои страницы с помощью встроенного веб-сервера Visual Studio:
Если бы это обслуживалось IIS7, мы бы увидели:
Встроенный веб-сервер Visual Studio имеет только ограниченный набор типов MIME, которые он может обслуживать, и не знает типов MIME, установленных для IIS7. Я написал ответ на аналогичную проблему в Stack Overflow некоторое время назад:
Встроенный сервер обслуживает ваш
.svg
файл как:Вероятно, именно это заставляет браузер запрашивать загрузку.
В Visual Studio убедитесь, что вы используете IIS Express, открыв свойства проекта своего сайта и выбрав вкладку «Интернет» в списке вертикальных вкладок:
Если у вас не установлен IIS 7.5 Express, вы можете получить его здесь:
Вам понадобится Visual Studio 2010 с пакетом обновления 1, чтобы воспользоваться всеми преимуществами:
Когда вы это сделаете, вы можете добавить
.svg
MIME-тип вweb.config
файл вашего приложения :источник
Как упомянуто выше, Cassini игнорирует эти настройки в web.config, поэтому вместо них нужно использовать IIS Express (в настройках проекта VS) /programming/5924647/setting-mime-types-using-the-asp- нетто-разработка-сервер
Для получения дополнительной информации о том, как настроить типы MIME с помощью пользовательского интерфейса администратора или с помощью web.config для IIS или IIS Express, см. Http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4- in-iis-for-a-website-or-global / и http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4-to-web-config-in-iis-7 /
источник
Я использовал Kev ответ:
источник
Мой обходной путь для этого состоял в том, чтобы создать свой собственный httphandler локально, который переписал бы тип контента для svg.
и в web.config я добавил:
С этим решением вам не нужно использовать IIS Express, вы можете просто использовать обычный сервер разработки в Visual Studio 2010
источник
Я использую IIS7 и смог это исправить, щелкнув правой кнопкой мыши на сервере в IIS и выбрав свойства. Затем я нажал на кнопку MIME Types ... Затем я нажал «Новый». Для расширения я набрал .svg. Для MIME Type я набрал изображение / svg + xml. Затем я сохранил все и сделал iisreset из командной строки. Работал отлично.
источник
Если у вас есть доступ к IIS, это также решает проблему: http://httpjunkie.com/2014/884/svg-no-iis/
источник