ASP Fontawesome 404(未找到)

11

我在我的生产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" />

我做错了什么?


我建议你发布自己的答案并将其标记为已接受,而不是编辑问题。 - fabriciorissetto
5个回答

5
当您将debug值设置为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中捆绑优化的工作方式呢? - clockwiseq
1
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 错误。 - KevinM
这个代码 "BundleTable.EnableOptimizations = false;" 对我有用,谢谢。 - Carlos Henrique Ferracin

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

你的意思是在包内直接修改font-awesome.css_variables.scss文件吗?我将font-awesome安装为Bower包,如果我更新了该包(即使它是NuGet包),那么自定义内容都会被覆盖!这听起来不是一个好主意。 - Csaba Toth

2

所有之前的回答对我都没有用。我发现页面请求资源的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()));

这样做对我有用。


0

我在使用ASP CoreLibMan时遇到了类似的问题。为了下载所需的文件,我添加了"webfonts/*"这一行:

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

0

对我来说,修改 font-awesome.css 或 font awesome 的 _variables.scss 或关闭优化听起来都像是一个非常糟糕的主意。前者将被包更新覆盖(假设您正在使用某些软件包管理系统 - bower、npm、NuGet)。后者会降低网站的性能。我会尝试以下两种方法:

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

最终我选择了NuGet包而不是Bower包,这将CSS文件放入了/Contents目录中,字体文件放入了/fonts目录中。因此,无论是Debug还是Release都可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接