无法在Visual Studio 2012中显示.svg文件(IIS Express)

Die*_*goS 5 asp.net svg iis-express visual-studio-2012

我试图使用Visual Studio 2012,IIS Express v8.0ASP .NET Web窗体在我的Web应用程序中显示.svg文件.

我已经尝试过的事情:

  1. 将.svg扩展名添加到web.config
<staticContent>
  <remove fileExtension=".svg" />
  <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>
Run Code Online (Sandbox Code Playgroud)
  1. 将.svg扩展名添加到C:\ Users\UserName\Documents\IISExpress\config\applicationhost.config
<staticContent lockAttributes="isDocFooterFileName">
  ...
  <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
  ...
Run Code Online (Sandbox Code Playgroud)
  1. 将图像的URL复制到浏览器,它显示正常.

在此输入图像描述 4.在IIS下发布站点,它显示正常.此外,我们有一个使用Visual Studio 2013的开发人员,它使用IIS Express v8.5显示正常.

我添加.svg作为图标,使用一个span具有文件的url作为背景的类的元素,所以我不能使用这个解决方案:VS2012中的SVG文件

这是添加到span的类的样式:

background: transparent url(images/svg/reports.svg) no-repeat scroll 0px 0px;
Run Code Online (Sandbox Code Playgroud)

发生了什么?

Die*_*goS 1

根据@user1429080的建议,有一个解决方法(尽管这不是最干净的工作方式):

我的解决方法是在本地创建我自己的 httphandler,它覆盖了 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

在 web.config 中我添加了:

<httpHandlers>
  <add verb="*" path="*.svg" type="SvgHandler" />
</httpHandlers>
Run Code Online (Sandbox Code Playgroud)

使用此解决方案,您不必使用 IIS Express,只需使用 Visual Studio 2010 中的常规开发服务器即可

来源:Visual Studio 不将 SVG 图像显示为背景