9

我在通过 AppHarbor 托管我的应用程序时遇到问题。我有一个基于 .net MVC 3 的基本应用程序。在这个应用程序中,我使用了 @font-face 属性以自定义字体显示内容:

@font-face {
font-family: facefont;
src: url("raleway_thin.otf");
} 
body {    
font-size: .85em;
font-family: "facefont", Verdana, Helvetica, Sans-Serif;
margin: 0;
padding: 0;
color: #696969;
}

当我在 loaclhost 中通过我的开发服务器运行此应用程序时,一切正常,内容以自定义字体显示。但是当我在这里将我的 webapp 推送到 AppHarbor 时:

通过 AppHarbor 测试应用程序

它不再以我在 .css 中使用的自定义字体显示内容。我对此感到困惑,因为我使用相同的浏览器(Chrome 15.0)来查看两者,但它们给出了不同的结果。

请帮忙。


我刚刚发现这仅发生在字体文件 [*.otf, *.ttf] 中。我将图像放在同一个文件夹中并且它被完美地添加但它再次未能获取字体文件并显示 404它。


还完成了配置 mimeTypes:

<staticContent>
        <mimeMap fileExtension=".otf" mimeType="font/otf" />
        <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
    </staticContent>
4

6 回答 6

20

为了将“.woff”格式字体部署到 Appharbor,我必须做两件事:

1:在我的 Visual Studio 项目中包含字体,确保它的“Build”属性设置为“Content”(如上面@Korayem 所述)
2:将以下配置添加到 Web.config:

<system.webServer>
    <staticContent>
        <remove fileExtension=".woff"/>
        <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
    </staticContent>
</system.webServer>
于 2011-12-15T02:10:13.757 回答
7

您的样式表在您的页面引用它的位置不可用。此网址提供 500:http ://testapp-216.apphb.com/Content/Site.css

您应该验证 AppHarbor 是否部署了相关的 .css 和字体文件。这很容易通过从 AppHarbor 下载构建输出包并检查其内容来完成。如果它不存在,您很可能需要在项目文件参考中将“构建操作”设置为“内容”。

正确配置 mimetypes 也很重要。

(免责声明,我是 AppHarbor 的联合创始人)

于 2011-11-08T20:24:37.677 回答
4

问题是字体文件.otf不是从 AppHarbor 服务器提供的,因为没有配置 MIME 类型来指定如何提供它。

请参阅此处如何使用 Web.config 添加 MIME 类型:http ://www.iis.net/ConfigReference/system.webServer/staticContent/mimeMap

您需要配置的 MIME 类型是font/otf

就像是:

<mimeMap fileExtension=".otf" mimeType="font/otf" />
于 2011-11-08T15:18:36.457 回答
1

您的样式表位于 /Content/Site.css 并且您在此文件中使用与 CSS 文件相关的“raleway_thin.otf”引用您的字体。因此,期望此文件路径存在 /Content/raleway_thin.otf

我不熟悉 appharbour,但请确保您的所有文件都区分大小写(即导致 windows 到 unix/linux 问题)。

否则,Web 服务器是否会阻止从相关目录加载某些文件扩展名。在 apache 上,您可以告诉它允许在目录中使用哪些文件类型。

话虽如此,404 意味着您的网址http://testapp-216.apphb.com/Content/raleway_thin.otf不存在

于 2011-11-08T15:19:01.013 回答
1

确保文件Build Action在 Visual Studio中设置为Content,否则不会返回 将构建操作设置为内容

在 AppHarbor 上为我工作

于 2011-12-12T18:14:53.240 回答
0
  1. 实施@Lloyd 解决方案..
  2. 建议将所有与字体相关的文件添加到 mime 类型,而不仅仅是 .woff

参考。http://geekswithblogs.net/JayantSharma/archive/2012/08/26/adding-mimetype-in​​-web.conifg-for-html5.aspx

于 2013-02-05T20:24:55.227 回答