2

私は@font-face自分のサイトのカスケードスタイルシートで定義されています。このフォントは、ローカルでサイトを参照すると正常に読み込まれます(IIS Expressによって提供されます)。ただし、リモートサーバー(IIS 7.5)からアプリケーションをロードする場合、このフォントを参照すると、内部サーバー500エラーが発生します。以下のスタイルがローカルで機能するのに、サーバーでは機能しないのはなぜですか?

@font-face {
    font-family: DejaVu Sans Mono;
    src: url('../fonts/DejaVuSansMono.ttf');
}

header h1
{
    font-family: 'DejaVu Sans Mono';
    font-size: 3em;
    padding: 0;
    margin: 0;
}
4

1 に答える 1

2

チェックすると、DejaVuSansMono.ttfファイルがサーバーにコピーされていないことがわかります。コピーされていないため、IIS7.5が提供するフォントファイルはありません。IIS Expressはローカルディレクトリでファイルを見つけることができるため、ローカルで機能します。

Visual Studioが認識しないファイルの種類では、BuildActionプロパティがデフォルトで[なし]に設定されています。フォントファイルは、そのような認識されないタイプの1つです。BuildActionがnoneの場合、VisualStudioはアプリケーションのビルド時にこのファイルを無視します。BuildActionプロパティには、すぐに使用できるオプションがいくつかあります。

  • なし-ファイルはプロジェクト出力グループに含まれず、ビルドプロセスでコンパイルされません。例として、Readmeファイルなどのドキュメントを含むテキストファイルがあります。
  • コンパイル-ファイルはビルド出力にコンパイルされます。この設定は、コードファイルに使用されます。
  • コンテンツ-ファイルはコンパイルされませんが、コンテンツ出力グループに含まれます。たとえば、この設定は.htmまたはその他の種類のWebファイルのデフォルト値です。
  • 埋め込みリソース-このファイルは、DLLまたは実行可能ファイルとしてメインプロジェクトビルド出力に埋め込まれます。通常、リソースファイルに使用されます。

の最も適切なBuildActionプロパティ設定DejaVuSansMono.ttfContentです。このようにBuildActionを設定すると、ファイルがリモートサーバーにコピーされます。残念ながら、この手動プロセスは、認識されないファイルタイプのファイルごとに繰り返す必要があり、開発者は面倒なエラーが発生しやすいプロセスに備えることになります。ありがたいことに、Andre Lokerには、VisualStudioでのデフォルト以外のファイルタイプのデフォルトのビルドアクションの設定に関するすばらしいブログ投稿があります。

于 2012-07-07T02:01:36.530 に答える