Digamos que tengo una página web simple con una imagen svg:
<img src="foobar.svg" alt="not working" />
Si hago esta página como página estática html y la veo directamente, se muestra svg. Si escribo la dirección de este svg, se muestra.
Pero cuando hago esto como página .aspx y lo ejecuto dinámicamente desde Visual Studio, recibo alt
texto. Si escribo la dirección de este svg (desde localhost, no como un archivo local), el navegador intenta descargarlo en lugar de mostrarlo.
Ya definí el tipo mime en IIS (para todo el servidor - "image / svg + xml") y reinicié IIS. Mismo efecto que antes.
Pregunta: ¿qué debo hacer más?
Actualizar
WireShark no funcionará (está en la documentación), probé también RawCap, pero no puede rastrear mi conexión (impar), afortunadamente Fiddler funcionó:
Del cliente:
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
Respuesta del servidor:
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. ***
Para el registro, aquí hay preguntas y respuestas útiles para Fiddler: /programming/826134/how-to-display-localhost-traffic-in-fiddler-while-debugging-an-asp-net-applicati
fuente
<img src...
que se muestra arriba, aspx se "traduce" a la página html completa, pero IIS realiza el envío de todo el contenido (html y luego svg).Respuestas:
De su seguimiento de Fiddler parece que está sirviendo sus páginas usando el servidor web incorporado de Visual Studio:
Si esto estuviera siendo atendido por IIS7, veríamos:
El servidor web incorporado de Visual Studio solo tiene un conjunto limitado de tipos MIME que puede servir y no tiene conocimiento de los tipos MIME que configura para IIS7. Escribí una respuesta a un problema similar en Stack Overflow hace un tiempo:
El servidor incorporado sirve su
.svg
archivo como:Esto es probablemente lo que está causando que el navegador solicite la descarga.
En Visual Studio, compruebe que está utilizando IIS Express abriendo las propiedades del proyecto de su sitio y seleccionando la pestaña "Web" de la lista de pestañas verticales:
Si no tiene instalado IIS 7.5 Express, puede obtenerlo desde aquí:
Necesitará Visual Studio 2010 Service Pack 1 para aprovechar al máximo:
Cuando lo haya hecho, puede agregar el
.svg
tipo mime alweb.config
archivo de su aplicación :fuente
Como se mencionó anteriormente, Cassini ignora esta configuración en web.config, por lo que uno debe usar IIS Express en su lugar (en la configuración del proyecto VS) /programming/5924647/setting-mime-types-using-the-asp- servidor de desarrollo de red
Para obtener más información sobre cómo configurar los tipos MIME usando la interfaz de usuario de administración o usando web.config para IIS o IIS Express, consulte: http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4- in-iis-for-a-website-or-global / y http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4-to-web-config-in-iis-7 / /
fuente
He usado la respuesta de Kev, por:
fuente
Mi solución para esto fue crear mi propio httphandler localmente que sobrescribió el tipo de contenido para svg.
y en web.config agregué:
con esta solución no tiene que usar IIS express, solo puede usar el servidor de desarrollo regular en Visual Studio 2010
fuente
Estoy ejecutando IIS7, y pude solucionar esto haciendo clic derecho en el servidor en IIS y seleccionando propiedades. Luego hice clic en el botón Tipos MIME ... Luego hice clic en Nuevo. Para la extensión, escribí .svg. Para el tipo MIME, escribí image / svg + xml. Luego guardé todo e hice un iisreset desde el símbolo del sistema. Funcionó muy bien.
fuente
Si tiene acceso a IIS, esto también soluciona el problema: http://httpjunkie.com/2014/884/svg-no-iis/
fuente