私はASP.NET MVC 4のプロジェクトに取り組んでおり、次の手順を実行しました。
ダウンロードしたTwitter bootstrap from http://blog.getbootstrap.com/2013/12/05/bootstrap-3-0-3-released/
フォントファイルのビルドアクションをコンテンツに設定します(ファイルは〜/ Content/fontフォルダーにあります)
glyphicons-halflings-regular.eot
glyphicons-halflings-regular.svg
glyphicons-halflings-regular.ttf
glyphicons-halflings-regular.woff
RouteConfig.csに追加されました
routes.IgnoreRoute( "{folder}/{* pathInfo}"、new {folder = "Content"});
Web.configに次の要素を追加しました
<?xml version="1.0" encoding="UTF-8"?>
<system.webServer>
<staticContent>
<remove fileExtension=".eot" />
<remove fileExtension=".ttf" />
<remove fileExtension=".otf"/>
<remove fileExtension=".woff"/>
<mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
<mimeMap fileExtension=".ttf" mimeType="font/ttf" />
<mimeMap fileExtension=".otf" mimeType="font/otf" />
<mimeMap fileExtension=".woff" mimeType="font/x-woff" />
</staticContent>
</system.webServer>
BundleConfig.csに次のコードが含まれています
bundles.Add(new StyleBundle("~/bundles/maincss")
.Include("~/Content/bootstrap/bootstrap.css")
.Include("~/Content/bootstrap/bootstrap-theme.css")
.Include("~/Content/hbl-full.css"));
また、次のコードで試しました
IItemTransform cssFixer = new CssRewriteUrlTransform();
bundles.Add(new StyleBundle("~/bundles/maincss")
.Include("~/Content/bootstrap/bootstrap.css", cssFixer)
.Include("~/Content/bootstrap/bootstrap-theme.css", cssFixer)
.Include("~/Content/hbl-full.css", cssFixer));
メインのLayout.cshtmlで呼び出されます
@ Styles.Render( "〜/ bundles/maincss")
それでもローカルホストのアイコンは通常どおり表示されますが、コードをプッシュしてサーバーをリリースすると、アイコンの代わりに正方形しか表示されず、Chromeのコンソールタブに表示されます
GET http://domain.apphb.com/fonts/glyphicons-halflings-regular.woff 404(Not Found)test:1
GET http://domain.apphb.com/fonts/glyphicons-halflings-regular.ttf 404(見つかりません)テスト:1
GET http://domain.apphb.com/fonts/glyphicons-halflings-regular.svg 404(見つかりません)テスト:1
ありがとうございました。
私はこの問題を抱えていましたが、リリースモードでビルドする際の縮小が原因で発生していることがわかりました。
bootstrapサイトからファイルを手動でダウンロードし、バンドルを構成するのではなく、私のためにnugetパッケージを使用します。
それを行うには、次の手順を実行します。
次のコマンドを実行して、Bootstrapをインストールします。
Install-Package Twitter.Bootstrap.MVC
これにより、すべてのbootrapファイルがダウンロードされ、以下の事前定義されたBootstrap bundle config:
public class BootstrapBundleConfig
{
public static void RegisterBundles()
{
// Add @Styles.Render("~/Content/bootstrap") in the <head/> of your _Layout.cshtml view
// For Bootstrap theme add @Styles.Render("~/Content/bootstrap-theme") in the <head/> of your _Layout.cshtml view
// Add @Scripts.Render("~/bundles/bootstrap") after jQuery in your _Layout.cshtml view
// When <compilation debug="true" />, MVC4 will render the full readable version. When set to <compilation debug="false" />, the minified version will be rendered automatically
BundleTable.Bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include("~/Scripts/bootstrap.js"));
BundleTable.Bundles.Add(new StyleBundle("~/Content/bootstrap").Include("~/Content/bootstrap.css"));
BundleTable.Bundles.Add(new StyleBundle("~/Content/bootstrap-theme").Include("~/Content/bootstrap-theme.css"));
}
}
上記には、バンドルのレンダリング方法を説明するコメントも含まれています。
元の404フォントエラーは、フォントフォルダーが縮小されたcssで指定されているものとは異なるレベルにあるためだと思います。
現在のソリューションを維持したい場合、404を修正できる唯一の方法は、フォントフォルダーをWebアプリケーションのルートにコピーすることでした。
ローカルでテストするには、Web設定からdebug="true"
を削除して、AppHarborへのデプロイを保存します。
解決方法は次のとおりです-MVC5およびBootstrap 3.1.1。
私のファイルは次のようにプロジェクトで整理されています:
/Content/Bootstrap/bootstrap.css
bootstrap.min.css
/Content/fonts/glyphicons-halflings-regular.eot
glyphicons-halflings-regular.svg
glyphicons-halflings-regular.ttf
glyphicons-halflings-regular.woff
次に、仮想パスに別のレベルを追加しましたbundle config
bundles.Add(new StyleBundle("~/Content/site/css").Include(
"~/Content/bootstrap/bootstrap.css",
"~/Content/styles/site.css"
));
以前は~/Content/css
を使用していました
そしてview ...
@Styles.Render("~/Content/site/css")
これは機能しましたが、まだフォントの1つで404を受け取っていたので... Gilesのソリューションを追加しました。
<?xml version="1.0" encoding="UTF-8"?>
<system.webServer>
<staticContent>
<remove fileExtension=".eot" />
<remove fileExtension=".ttf" />
<remove fileExtension=".otf"/>
<remove fileExtension=".woff"/>
<mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
<mimeMap fileExtension=".ttf" mimeType="font/ttf" />
<mimeMap fileExtension=".otf" mimeType="font/otf" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
</staticContent>
</system.webServer>
フォントフォルダーをWebアプリのルートにコピーし、web.configのMIMEタイプを次のように変更します。
<?xml version="1.0" encoding="UTF-8"?>
<system.webServer>
<staticContent>
<remove fileExtension=".eot" />
<remove fileExtension=".ttf" />
<remove fileExtension=".otf"/>
<remove fileExtension=".woff"/>
<mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
<mimeMap fileExtension=".ttf" mimeType="font/ttf" />
<mimeMap fileExtension=".otf" mimeType="font/otf" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
</staticContent>
</system.webServer>
私のために問題を修正しました。 .woff mimeTypeは問題のmimeTypeとは異なることに注意してください。
IIS 7.5ウェブサーバーを使用して、同じ問題が発生しました。
解決策は、Webサーバー上のMIMEタイプがapplication/octet-streamのファイル名拡張子のリストに.woffを追加することでした。
Web.configでも同じことができます。
<staticContent>
<remove fileExtension=".woff" />
<mimeMap fileExtension=".woff" mimeType="application/octet-stream" />
</staticContent>
同じ問題がありました。理由はわかりませんが、bootstrap.min.cssファイルを削除し、バンドルにCssRewriteUrlTransformを設定すると、すべてが機能します。私はbootstrap v3.1.1を使用しています
編集:いくつかの調査の後、ソリューションはここで定義されています: CssRewriteUrlTransformは呼び出されていません したがって、代わりにbootstrap.min.cssを削除するか、bootstrap.min.cssを参照しますbootstrap.cssを使用すると、ファイルのバンドリング/縮小が強制されるため、CssRewriteUrlTransformが呼び出されます。
同じ問題がありました。ブートストラップのCDNを使用して回避しました。
IgnoreRoute
で、「Content」フォルダーを指定しました。それがあなたが要求しているものであるので、フォント用の追加も試してください。
routes.IgnoreRoute("{folder}/{*pathInfo}", new { folder = "fonts" });