ASP.NET MVCフレームワーク4.5 CSSバンドルがホスティングで機能しない


144

MVC4で書かれたアプリハーバーでアプリを実行しています。

CSSファイルのバンドルが機能しません。デバッグモードのローカルコンピューターで、アプリのコードとファイルを確認します。アプリは期待どおりに動作します。

<link href="/Content/css/home/basic-jquery-slider.css" rel="stylesheet"/>
<link href="/Content/css/home/Home.css" rel="stylesheet"/>

Appharborにアプリをアップロードすると、コードにバンドルが表示されますが、アプリが機能しません。

<link href="/Content/css/home?v=zhVOIpUNuvCOZhJyBcQWpMlozayor4te6k-pM29wHqI1" rel="stylesheet"/>

私がそのリンクをブラウズするhrefと、403-Forbidden:アクセスが拒否されます。

これをトラブルシューティングする方法?


この問題を解決したかどうかはわかりませんが、この記事で解決しました。stackoverflow.com/a/18474844/955831
Jason Foglia 2013

回答:


284

私の推測では、パスはContent/cssアプリのディスク上に存在しています。この場合、MVCではなくIISが要求を処理します。

バンドルの仮想パス(StyleBundleコンストラクターのパラメーター)がファイルシステムのフォルダーと一致しないことを確認してください。

コメントから:

「バンドルを作成する際に従うべき良い慣習は、バンドル名に接頭辞として「バンドル」を含めることです。これにより、起こり得るルーティングの競合を防ぐことができます。」


2
ありがとう。ローカルホストで実行しているときに機能するのは正常ですか?
Ricardo Polo Jaramillo 2012

3
この答えのおかげで-私を狂わせていました!
Rich Turner、

8
@localhostによる@RicardoPoloは、開発マシンのiis expressで実行することを意味しますか?次に、はい、デバッグモードで実行している可能性が高いため、通常はそこで機能します。これにより、バンドルが無効になります。
bvgheluwe 2014年

1
ありがとう、これは今日私を狂気に駆り立てていました
xingyu

11
+1この回答は、仮想パスがバンドリングでどのように機能するかを理解するのに役立ちます。私はmsdnの元の投稿(asp.net/mvc/tutorials/mvc-4/bundling-and-minification)を読みましたが、あなたの答えで私の問題を解決した後、私は投稿の最後に仮想について話しているテキストのビットを見つけましたパス:「バンドルを作成する際に従うべき良い慣習は、バンドル名にプレフィックスとして「バンドル」を含めることです。これにより、ルーティングの競合の可能性を防ぎます。」この文は太字で赤/黄色の警告画像を付けてください。:Dありがとう!
サミュエル

45

この問題はデフォルトで.NETは.jsまたは.css拡張子を持つリクエストを「処理」しません。

これには2つの修正があります(1つだけ実行する必要があります)

A)バンドル名から拡張子を削除します。(推奨)これにより、.NETはリクエストを処理し、BundleModuleを介して実行します。

B)これをsystem.webServerセクションのweb.configに追加すると、.NETはBundleModuleを介して.jsおよび.cssリクエストを実行します。

<modules runAllManagedModulesForAllRequests="true">
  <remove name="BundleModule" />
  <add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>

実際の原因を理解し、ブログで共有してくれたレイモロに大声で:http : //blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html


根本原因に関する詳細情報と2番目のオプションで更新されました。
cdeutsch 2013

1
バンドルの名前が「css」で終わるフォルダのような名前だったため、この問題が発生していました。私のバンドルはファイル拡張を正確に備えていませんでしたが、提案Aが私を問題に導きました。
dsnunez 2014年

1
これは正解であるはずです。同じ問題で私を助けます。
psulek

すばらしい答えは私を助けます
DKR

web.configの男ああ...から欠落している<モジュール>セクションでこの事
XDS

19

AppHarborにASP.NET MVCアプリをデプロイしようとしたときも、私と一緒に起こりました。

という名前のスタイルシートバンドルがありました

@Styles.Render("~/Content/bootstrap")

そして、フォルダ構造は

-コンテンツ

-コンテンツ\ブートストラップ\ ...

バンドル名を"~/Content/bootstrap-css"私の問題に変更するだけで解決しました。


15

私はこの質問に4年遅れていることを知っていますが、これでうまくいきました。

public static void RegisterBundles(BundleCollection bundles)
{
   ...

   BundleTable.EnableOptimizations = true;     // Added this           
}

2
上記および以下のすべての回答のうち。これは私のために働いた唯一のものです。
Haim Katz

3
これにより、デバッグモードでの最適化が可能になります。これは、バンドルが開発マシンで機能するかどうかを確認するのに最適な方法ですが、このステートメントをコードに残してはいけません。
Rudey 2017

9

403エラーは解決しました。これは、403エラーの詳細な説明と解決策です。CSSバンドル
のソリューション を示します。ただし、JavaScriptにも適用されます。

http://www.mvccentral.net/Story/Details/articles/kahanu/stylebundle-403-error-solved

簡単に言えば、代わりに仮想パス[Script | Style]Bundle("~/content/[script | css]")がファイルシステム内のフォルダーと一致しないことを確認して ください(例C:\approot\Content\[script | css]:)[Script | Style]Bundle("~/content/[scriptDiff | cssDiff]")


2
ありがとう、これは私が経験した問題です。それを解決するために、BundleConfig.csでパスを@ Styles.Render( "〜/ Content / css")から@ Styles.Render( "〜/ bundles / css")に変更しました。ローカルでデバッグモードで実行しているときと、リリースモードまたはデバッグモードで公開しているときに機能するようになりました。
ケンパーマー、

素敵な返信ですが、リンクだけを残すべきではありません。少なくとも、リンクされたWebサイトがダウンした場合に備えて、この記事の基本的な手順をここに書いておくとよいでしょう。
Vitor M. Barbosa

5

BundleConfigクラスに以下のコード行を追加することで問題を解決しました

BundleTable.EnableOptimizations = false;

3

私がすることはとても簡単です

次のようにScriptBundleの最後に「js」を追加します:new ScriptBundle( "〜/ bundles / appjs")そして、StyleBundleの最後に次のように「css」を追加します:new StyleBundle( "〜/ content / appcss")

フォルダー名の末尾が「js」または「css」になることはありません。

それでうまくいくはずです。


2

これは「ScriptBundleクラス」にも適用されます。コンストラクターの「パラメーター名」がWebアプリケーションファイルシステムのパスと一致しないことを確認してください。IISがファイル/リクエストを提供しようとすることに注意してください。


1

また、暗号化されているファイルから問題が発生する場合もあります。これは、BootStrapをダウンロードして提供されたファイルを使用したときに発生しました。Windowsエクスプローラーでは緑色で表示され、Visual Studioでは問題なく機能しましたが、展開すると403エラーが発生しました。

プロパティ、次に詳細プロパティに移動して暗号化されているかどうかを確認できます。暗号化されたチェックボックスがあります。

チェックを外すと、問題はなくなります。


0

私はその(403 Forbidden)エラーで同じ問題があります。私の場合、理由は私の組織のプロキシサーバーがcssファイルをブロックしていることです。CSSファイル名がブロックルールの1つと一致します。


0

bootstrap.cssファイルがコンテンツフォルダにないことがわかりましたので、パッケージで探し、そこに貼り付けました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.