如何使用 Visual Studio 为 SVG 和 Web 测试配置 IIS?

gre*_*man 14 image iis-7 configuration visual-studio-2010

假设我有一个带有 svg 图像的简单网页:

<img src="foobar.svg" alt="not working" />
Run Code Online (Sandbox Code Playgroud)

如果我将此页面设为静态 html 页面并直接查看它,则会显示 svg。如果我输入这个 svg 的地址——它就会显示出来。

但是当我将其设为 .aspx 页面并从 Visual Studio 动态启动它时,我会收到alt文本。如果我输入这个 svg 的地址(来自本地主机,而不是本地文件)——浏览器会尝试下载它而不是显示它。

我已经在 IIS 中定义了 mime 类型(对于整个服务器——“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
Run Code Online (Sandbox Code Playgroud)

来自服务器的回答:

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. ***
Run Code Online (Sandbox Code Playgroud)

作为记录,这里是 Fiddler 的有用问答:https : //stackoverflow.com/questions/826134/how-to-display-localhost-traffic-in-fiddler-while-debugging-an-asp-net-applicati

Kev*_*Kev 14

从您的 Fiddler 跟踪来看,您似乎正在使用内置的 Visual Studio Web 服务器为您的页面提供服务:

Server: ASP.NET Development Server/10.0.0.0
Run Code Online (Sandbox Code Playgroud)

如果这是由 IIS7 提供的,那么我们会看到:

Server: Microsoft-IIS/7.5
Run Code Online (Sandbox Code Playgroud)

内置的 Visual Studio Web 服务器只能提供一组有限的 mime 类型,并且不知道您为 IIS7 设置的 mime 类型。不久前,我在 Stack Overflow 上写了一个类似问题的答案:

使用 ASP.NET 开发服务器设置 MIME 类型

内置服务器为您的.svg文件提供服务:

Content-Type: application/octet-stream
Run Code Online (Sandbox Code Playgroud)

这可能是导致浏览器提示下载的原因。

在 Visual Studio 中,通过打开站点的项目属性并从垂直选项卡列表中选择“Web”选项卡,检查您是否正在使用 IIS Express:

在此处输入图片说明

如果您没有安装 IIS 7.5 Express,您可以从这里获取:

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

您将需要 Visual Studio 2010 Service Pack 1 才能充分利用:

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

IIS Express 支持

Visual Studio 2010 SP1 使您能够使用 Internet Information Services (IIS) 7.5 Express 作为网站和 Web 应用程序项目的本地托管服务器。

注意IIS 7.5 Express 不包含在 SP1 中,您必须单独下载。有关更多信息,请访问以下博客:http : //weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx

完成后,您可以将.svgMIME 类型添加到应用程序的web.config文件中:

<configuration>
   <system.webServer>
      <staticContent>
         <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
      </staticContent>
   </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)