14 votos

Cómo configurar IIS para SVG y pruebas web con Visual Studio?

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 html estática y verlo directamente svg se muestra. Si me escriba la dirección de este svg -- no se muestra.

Pero cuando hago esto como .página aspx y poner en marcha de forma dinámica a partir de Visual Studio llego alt de texto. Si me escriba la dirección de este svg (desde localhost, no como un archivo local) -- el navegador intenta descargarlo en lugar de mostrar.

Yo ya se definió el tipo mime en IIS (para todo el servidor -- "image/svg+xml") y reiniciar IIS. Mismo efecto de antes.

Pregunta: ¿qué debo hacer?

Actualización

WireShark no funciona (está en la documentación), he intentado también RawCap, pero no puede hacer el seguimiento de mi conexión (impar), por suerte el Violinista trabajado:

Desde el 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í es útil Q&a para Fiddler: http://stackoverflow.com/questions/826134/how-to-display-localhost-traffic-in-fiddler-while-debugging-an-asp-net-applicati

14voto

Reto Meier Puntos 55904

Desde su Fiddler traza parece que usted está sirviendo a sus páginas utilizando el built-in Visual Studio servidor web:

Server: ASP.NET Development Server/10.0.0.0

Si este estaba siendo servido por IIS7, a continuación, nos gustaría ver:

Server: Microsoft-IIS/7.5

El built-in Visual Studio servidor web sólo tiene un conjunto limitado de tipos mime que puede servir y no tiene conocimiento de los tipos de mime se establece para IIS7. Escribí una respuesta a un problema similar en Stack Overflow un tiempo atrás:

Configuración de tipos MIME uso de la ASP.NET Servidor de Desarrollo

El built-in del servidor es el que sirve a su .svg archivo como:

Content-Type: application/octet-stream

Esto es probablemente lo que está causando el navegador para preguntar para descargar.

En Visual Studio compruebe que está utilizando IIS Express mediante la apertura de su sitio, las propiedades del proyecto y seleccionando la solapa "Web" de la vertical de la lista de la ficha:

enter image description here

Si usted no tiene IIS 7.5 Express instalado, usted puede conseguir a partir de aquí:

http://www.microsoft.com/download/en/details.aspx?id=1038

Tendrá que Visual Studio 2010 Service Pack 1 para tomar la ventaja completa:

http://support.microsoft.com/kb/983509

Compatibilidad con IIS Express

Visual Studio 2010 SP1 le permite usar la Información de Internet Services (IIS) 7.5 Express como el local del servidor de hosting para el sitio web y Proyectos de Aplicación Web.

Nota IIS 7.5 Express no está incluido en el SP1, y usted debe descargar por separado. Para obtener más información, visite el siguiente blog: http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx

Cuando hayas hecho eso, se puede agregar el .svg el tipo mime para su aplicación web.config archivo:

<configuration>
   <system.webServer>
      <staticContent>
         <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
      </staticContent>
   </system.webServer>
</configuration>

2voto

George Birbilis Puntos 21

Como se mencionó anteriormente, Cassini ignora estas opciones en la web.config entonces uno tiene que usar IIS Express en lugar de (a VS ajustes del proyecto) http://stackoverflow.com/questions/5924647/setting-mime-types-using-the-asp-net-development-server

Para obtener más información sobre cómo configurar los tipos MIME uso de la interfaz de usuario de admin o uso de la web.de configuración de IIS o IIS Express ver: 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/

2voto

Luke Puntos 394

He usado Kev respuesta, por:

  1. La instalación de IIS 8.0 Express desde el Instalador de Plataforma Web
  2. Cambio de propiedades del proyecto para el uso de IIS Express y la creación de un Directorio Virtual para que
  3. Añadir en la web.configuración configuración → sistema.servidor web
<staticContent>
    <remove fileExtension=".svg" />
    <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>

2voto

Robin Karlsson Puntos 21

Mi solución fue crear mi propio httphandler localmente, que sobrescribe el contenido de tipo para svg.

public class SvgHandler : IHttpHandler
{

    public bool IsReusable
    {
        get { return false; }
    }

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "image/svg+xml";
        context.Response.BinaryWrite(File.ReadAllBytes(context.Request.PhysicalPath));
        context.Response.End();
    }
}

y en la web.config he añadido:

<httpHandlers>
  <add verb="*" path="*.svg" type="SvgHandler" />
</httpHandlers>

con esta solución usted no tiene que usar IIS express, sólo se puede utilizar de forma regular servidor de desarrollo de visual studio 2010

1voto

Troy Tabor Puntos 1

Estoy corriendo IIS7, y era capaz de arreglar esto haciendo clic derecho en el servidor de IIS y seleccionando propiedades. Luego de que hace clic en los Tipos MIME... botón. Luego hacer clic en Nuevo. Por la extensión que he escrito en .svg. Para el Tipo MIME que he escrito en image/svg+xml. Entonces me guarda es de todos y se hizo un iisreset desde el símbolo del sistema. Trabajó mucho.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: