145

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"/>

そのリンクを参照すると、href403 -Forbidden:アクセスが拒否されます。

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

4

11 に答える 11

287

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

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

コメントから:

「バンドルを作成するときに従うべき良い規則は、バンドル名のプレフィックスとして「バンドル」を含めることです。これにより、ルーティングの競合の可能性を防ぐことができます。」

于 2012-08-22T22:22:49.060 に答える
46

この問題はデフォルトで.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>

実際の原因を突き止め、私のブログで共有してくれたRay Moroに大声で叫びます:http: //blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html

于 2012-11-28T03:07:20.173 に答える
20

ASP.NETMVCアプリをAppHarborに展開しようとしたときにも起こりました。

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

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

フォルダー構造は

- コンテンツ

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

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

于 2015-01-30T07:22:22.683 に答える
15

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

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

   BundleTable.EnableOptimizations = true;     // Added this           
}
于 2016-03-29T20:17:11.953 に答える
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]")

于 2014-04-18T18:01:31.873 に答える
5

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

BundleTable.EnableOptimizations = false;
于 2018-09-17T14:30:15.747 に答える
3

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

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

私のフォルダ名は「js」または「css」で終わることはありません。

それはそれをする必要があります。

于 2014-06-24T17:43:50.930 に答える
2

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

于 2012-10-30T22:17:35.077 に答える
1

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

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

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

于 2014-03-08T02:32:49.490 に答える
0

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

于 2013-12-23T10:10:10.567 に答える
0

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

于 2016-12-23T17:04:17.403 に答える