Digamos que eu tenha uma página da web simples com uma imagem svg:
<img src="foobar.svg" alt="not working" />
Se eu criar essa página como página estática em html e visualizá-la diretamente, svg será exibido. Se eu digitar o endereço deste svg - ele será exibido.
Mas quando eu faço isso como uma página .aspx e a inicio dinamicamente do Visual Studio, recebo alt
texto. Se eu digitar o endereço deste svg (do localhost, não como um arquivo local) - o navegador tentará fazer o download em vez de exibir.
Eu já defini o tipo mime no IIS (para todo o servidor - "image / svg + xml") e reiniciei o IIS. O mesmo efeito de antes.
Pergunta: o que devo fazer mais?
Atualizar
O WireShark não funcionará (está na documentação), tentei também o RawCap, mas ele não pode rastrear minha conexão (ímpar), felizmente, o Fiddler trabalhou:
Do 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
Resposta do 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 o registro, aqui estão as perguntas e respostas úteis para o Fiddler: /programming/826134/how-to-display-localhost-traffic-in-fiddler- while-debugging-an-asp-net- applicati
fonte
<img src...
como mostrado acima, o aspx é "traduzido" para a página html completa, mas o envio de todo o conteúdo (html e svg) é feito pelo IIS.Respostas:
No rastreamento do Fiddler, parece que você está veiculando suas páginas usando o servidor Web Visual Studio interno:
Se isso estivesse sendo veiculado pelo IIS7, veríamos:
O servidor da Web interno do Visual Studio possui apenas um conjunto limitado de tipos MIME que ele pode servir e não tem conhecimento dos tipos MIME definidos para o IIS7. Eu escrevi uma resposta para um problema semelhante no Stack Overflow há um tempo:
O servidor interno está servindo seu
.svg
arquivo como:Provavelmente, isso está causando o download do navegador.
No Visual Studio, verifique se você está usando o IIS Express, abrindo as propriedades do projeto do site e selecionando a guia "Web" na lista de guias verticais:
Se você não possui o IIS 7.5 Express instalado, pode obtê-lo aqui:
Você precisará do Visual Studio 2010 Service Pack 1 para aproveitar ao máximo:
Quando você fizer isso, poderá adicionar o
.svg
tipo MIME aoweb.config
arquivo do seu aplicativo :fonte
Como mencionado acima, a Cassini ignora essas configurações no web.config, portanto, é necessário usar o IIS Express (nas configurações do projeto do VS) /programming/5924647/setting-mime-types-using-the-asp- servidor de desenvolvimento de rede
Para obter mais informações sobre como configurar os tipos MIME usando a UI administrativa ou o web.config para IIS ou IIS Express, consulte: http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4- in-iis-for-a-website-or-global / e http://4rapiddev.com/tips-and-tricks/add-mime-type-flv-mp4-to-web-config-in-iis-7 /
fonte
Eu usei a resposta Kev, por:
fonte
Minha solução para isso foi criar meu próprio manipulador de http localmente, que substituiu o tipo de conteúdo para svg.
e no web.config eu adicionei:
com esta solução, você não precisa usar o IIS Express, basta usar o servidor de desenvolvimento regular no visual studio 2010
fonte
Estou executando o IIS7 e consegui corrigir isso clicando com o botão direito do mouse no servidor no IIS e escolhendo propriedades. Depois, cliquei no botão MIME Types .... Depois, cliquei em Novo. Para a extensão, digitei .svg. Para o tipo MIME, digitei image / svg + xml. Em seguida, salvei tudo e fiz um iisreset no prompt de comando. Trabalhou muito bem.
fonte
Se você tiver acesso ao IIS, isso também resolverá o problema: http://httpjunkie.com/2014/884/svg-no-iis/
fonte