ASPX +渐变SVG不能在Visual Studio 2010上工作



我最近在设计网页时遇到了一个问题。我需要圆角和渐变背景。对于IE6-8、Firefox和Chrome,我已经使用CSS3Pie解决了这个问题。由于Pie不能在ie9上工作,我想出了SVG渐变。我在本地机器上进行了测试,没有问题。一切都好了。但是当我粘贴到我的VS2010项目没有发生任何事情,因为没有找到。svg。从来没有达到?还是VS2010问题?下面是我的代码:

default . aspx

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>Sample</title>
    <style type="text/css" media="screen">
    .svgWorkPlease
    {
        border-radius: 100px;
        box-shadow: 0px 2px 4px #999;
        margin:20px;
        height:500px;
        width:500px;
        background-repeat: repeat-x;
        background-position-x: 0px;
        background-position-y: 100%;
        filter:none;
        background-image: url(gradients.svg);
        background-size: 100% 200%;
    }
    </style>
</head>
<body>
    <div class="svgWorkPlease">Hmmmmm....</div>
</body>
</html>

gradients.svg

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="grad1" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
    </linearGradient>
    <linearGradient id="grad2" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:rgb(0,255,255);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(0,0,255);stop-opacity:1" />
    </linearGradient>
  </defs>
  <rect x="0" y="0" width="100" height="100" style="fill:url(#grad1)" />
  <rect x="0" y="100" width="100" height="100" style="fill:url(#grad2)" />
</svg>

提前感谢!

我想我可能有点晚了,但如果你仍然有这个问题,那么我可能有一个解决方案给你:

卡西尼号(ASP。Net Development Server)不能提供SVG。对我(以及我的整个开发团队)有效的解决方案是让IIS运行,并配置项目使用IIS作为服务器环境运行。(另一种解决方案是在页面内容中使用内联SVG数据,但我不建议这样做;我觉得它很乱。

这是我在SO和一两个网页上的各种线程提出的解决方案,这些链接都是我忘记存档的。不幸的是,我还遇到了身份验证问题,并且不得不研究一个单独的解决方案。以下是我发给我的开发团队的汇编指令列表(压缩了一点,细节较少,以免成为一本书):

注意:以下大多数步骤需要本地计算机上的管理帐户,或者如果您在AD域上,则需要Active Directory管理员帐户(或要求域管理员赋予您本地管理权限—我就是这么做的)。

启用IIS和Windows身份验证

注意:如果这不能为你工作,那么你可能需要从头安装IIS。

  1. 进入开始>控制面板>程序和功能>打开和关闭Windows功能
  2. 在功能列表中,选中Internet Information Services旁边的框,然后展开树并导航到Internet Information Services> World Wide Web Services> Security,选中Windows Authentication旁边的框。单击OK。

配置IIS

    打开"开始"菜单,在搜索框中输入"IIS"。按回车键/回车键打开。
  1. 添加一个新站点,确保使用正确的应用程序池(我的应用程序是MVC,依赖于。net 4.0),并将目录指向存储项目副本的本地目录(我将我的保存在C:Projects)。确保你指向的是web应用程序的根文件夹,而不是项目的根文件夹(如果你使用MVC,正确的文件夹将直接包含你的Models/Views/Controllers文件夹)。给站点设置一个端口号(随便编一个,一些容易记住的东西,但如果您计划同时在这台机器上测试多个项目,就不要使用"80")。单击OK。
  2. 在树的顶部的主服务器的配置窗格中,选择MIME类型,并确保列表中有一个条目看起来像"。svg"|"image/svg+xml"—
  3. 在新网站的配置窗格中,选择Authentication。禁用所有形式的身份验证,除了"Windows身份验证"—启用那个

注:. NET v4.0应用程序池不在步骤2中的列表中,请遵循以下应急步骤:

应用程序池应急

注意:这些步骤仅适用于ASP。当在IIS管理器中选择应用程序池时,NET v4.0不是一个选项。

  1. 打开命令终端
  2. 类型cd C:WindowsMicrosoft.NETFramework64 (Framework64文件夹名称可能不同,因此您可能需要在C:WindowsMicrosoft.NET目录中查找它)。按回车/回报。
  3. 输入dir,列出该文件夹的内容。在其中查找一个文件夹名称,如v4.0.30319cd
  4. 类型aspnet_regiis -ir。按回车/回报。
  5. 一旦它完成了它的事情,关闭终端窗口,关闭/重新打开IIS管理器,然后再去启用"Windows身份验证"。
现在,要预览您的网站,配置VS2010项目指向http://localhost:<port>,其中<port>是您在配置IIS的步骤2中输入的端口号。您还需要为Windows身份验证配置项目。

请注意,这些说明只在IIS 7.5的Windows 7企业版上进行了个人测试。即使您的环境与我的环境相同,您的应用程序也可能不同,因此您可能需要修改我的一些步骤。

我希望我在这里有所帮助,没有多余。我想我可以把所有的步骤汇编在一起,而不是给你一堆链接,然后说"祝你好运"。如果你(或任何人)希望了解以上步骤的更多细节,我可以更明确地说明;我只是假设你对Windows、IIS和Visual Studio有一定程度的熟悉。

如果我找到我上面提到的链接,我会编辑这篇文章并把它们包含进去。

最新更新