【问题标题】:asp fontawesome 404 (not found)asp fontawesome 404(未找到)
【发布时间】:2014-05-13 11:56:18
【问题描述】:

我的生产 IIS7 服务器和本地 iisexpres 都出现此错误(在我设置 debug="false" 之后)

GET http://localhost:64231/font/fontawesome-webfont.woff?v=3.2.1 404 (Not Found) jquery-1.11.0.min.js:2
GET http://localhost:64231/font/fontawesome-webfont.ttf?v=3.2.1 404 (Not Found) localhost/:1
GET http://localhost:64231/font/fontawesome-webfont.svg 404 (Not Found) 

我已将 mime 类型添加到 web.config。我也将它们添加到 IIS

  <remove fileExtension=".woff" />
  <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
  <remove fileExtension=".svg" />
  <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
  <remove fileExtension=".ttf" />
  <mimeMap fileExtension=".ttf" mimeType="application/x-font-ttf" />

我做错了什么?

【问题讨论】:

  • 我建议您发布自己的答案并将其标记为已接受,而不是编辑问题。

标签: asp.net-mvc iis-7 font-awesome-3.2


【解决方案1】:

当您将调试值设置为 false 时,它​​将自动启用捆绑包的优化。而不是在您的 html 生成的代码中(通过示例):

<link href="/content/bootstrap-3.3.5.min.css" rel="stylesheet"/>
<link href="/content/font-awesome.min.css" rel="stylesheet"/>

你会有这样的东西:

<link href="/Styles?v=ca92niiBlGWlTNkBwoMTPgQGz9_5Ghi39pZxcx5Dyfk1" rel="stylesheet"/>

这就是您的路径不再正确的原因。我认为设置绝对路径是解决此问题的正确方法。

如果您不想在应用程序处于发布模式 (debug="false") 时自动启用优化,您可以将此行添加到您的文件 /App_Start/BundleConfig.cs 中:

BundleTable.EnableOptimizations = false;

编辑:我刚刚看到你的问题的日期......我来到这里是因为我昨天遇到了同样的问题。我希望我的解释对某人有所帮助。

【讨论】:

  • 我最终禁用了优化,但还不知道或不了解后果。它纠正了字体未加载的问题,但问题在于捆绑和相对路径。该路径在 web-icons 和 font-awesome 样式表中设置。为什么这样的事情会破坏 MVC 中捆绑优化的工作方式?
  • font-awesome.css 中的字体路径是相对的:../fonts/fontawesome-webfont.woff2。假设您的字体和 css 在 /content/fonts//content/css/ 文件夹中,当您拥有 debug="false" 时它将按预期工作,因为字体路径将为 /content/fonts/,但是当您更改为 debug="true" 时,您的所有 css文件现在在 /Styles?v=... 中引用,字体路径将为 /fonts/fontawesome-webfont.woff2,这会导致 404 错误。
  • 这个“BundleTable.EnableOptimizations = false;”为我工作,谢谢
【解决方案2】:

问题在于字体的相对路径。我已将其替换为绝对路径url('/content/FontAwesome/font/...');

【讨论】:

  • 您的意思是直接在包内修改font-awesome.css_variables.scss?我将 font-awesome 安装为 bower 包,如果我要更新包(即使它是 NuGet 包),它也会覆盖自定义!这听起来是个坏主意。
【解决方案3】:

所有最后的回复都不适合我。我可以看到页面请求资源的url就像'YourWebsite/fonts/fontawesome-webfont.woff2?v=4.7.0'

然后我决定生成带有路径“~/bundles/fonts”的fontawesome包

bundles.Add(new StyleBundle("~/bundles/fonts") .Include("~/Content/font-awesome.css", new CssRewriteUrlTransform()));

然后为我工作

【讨论】:

    【解决方案4】:

    对我来说,修改 font-awesome.css 或 font awesome 的 _variables.scss 或关闭优化听起来都是个坏主意。前者将被包更新覆盖(假设您正在使用一些包管理系统 - bower、npm、NuGet)。后者会降低网站的性能。我会试试这些:

    1. 安装 FontAwesome NuGet 包而不是 bower 或 npm 存储库。这会将font-awesome.css 放入/Content 目录中,因此相对../font/ 也将指向正确的方向。
    2. 也将文件(基本上是复制)复制到/font/。在软件包更新的情况下,后一种可能会导致两个副本发生分歧,但不会导致网站失败。

    最后,我使用了 NuGet 包而不是凉亭包,并将 css 放入 /Contents 并将字体放入 /fonts。所以 Debug 和 Release 都可以正常工作。

    【讨论】:

      【解决方案5】:

      ASP coreLibMan 也有类似的问题。为了下载所需的文件,我添加了"webfonts/*"这一行:

      {
         "library": "font-awesome@5.15.2",
         "destination": "wwwroot/lib/fontawesome",
         "files": [
            "css/all.css",
            "js/all.js",
            "webfonts/*"
            ]
      }
      

      【讨论】:

        猜你喜欢
        • 2011-04-17
        • 2021-03-21
        • 2017-04-04
        • 2016-10-06
        • 2019-10-20
        • 2021-02-27
        • 2017-01-20
        • 2018-12-03
        • 2017-12-08
        相关资源
        最近更新 更多