私のすべてのアプリケーションは正常に機能していましたが、突然、IISの下のすべてのサイトがcss、イメージ、スクリプトをロードしていません。ログインページにリダイレクトします。
ログインすれば正常に動作します。例:mysite.com/Account/LogOn?ReturnUrl =%2fpublic%2fimages%2ficons%2f41.png
私のローカルマシンでは、ログインしなくても正常に動作します。
私のすべてのアプリケーションは正常に機能していましたが、突然、IISの下のすべてのサイトがcss、イメージ、スクリプトをロードしていません。ログインページにリダイレクトします。
ログインすれば正常に動作します。例:mysite.com/Account/LogOn?ReturnUrl =%2fpublic%2fimages%2ficons%2f41.png
私のローカルマシンでは、ログインしなくても正常に動作します。
問題は、IISが静的コンテンツを提供していないことである可能性があります。静的コンテンツは次の場所で設定できます。
ソース:http ://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/
ウインドウズ10:
同じ問題が発生しました。WindowsServer2012R2のIIS8.5のASP.Net4.5にWebアプリケーションをインストールしたときに、認証されていないページでCSS、JS、およびイメージが読み込まれませんでした。
それでも、問題を解決したものは何もないようでした。そして最後に、匿名ユーザーのIDをApp Pool Identityに設定してみたところ、機能し始めました。
私は数時間頭を叩きました。この応答が私の仲間の開発者の苦痛を救うことを願っています。
なぜこれが機能しているのか本当に知りたいです。何かご意見は?
同様のエラーが発生しました。コンソールは次のようになりました。
私の問題は、会社が1つのトップドメインを使用していて、サブドメインを使用していないため、サブフォルダーでサイトを実行していたことでした。このような:
host.com/app1
host.com/app2
私のコードは、ローカルホストでは正常に機能したが、app1またはapp2では機能しなかったスクリプトを含めると次のようになりました。
<link rel="stylesheet" type="text/css" href="/Content/css/font-awesome.min.css" />
~
srcにチルダ記号を追加すると、すべてが機能しました。
<link rel="stylesheet" type="text/css" href="~/Content/css/font-awesome.min.css" />
~
vsの説明/
:
/
-サイトルート~/
-アプリケーションのルートディレクトリ/
サイトのルートを返します(http://host.com/
)、
~/
アプリケーションのルートを返します(http://host.com/app1/
)。
web.configからstaticContentセクションを削除してみてください。
<system.webServer>
<staticContent>
...
</staticContent>
</system.webServer>
これはあなたの質問に答えないかもしれませんが、私は新しいIISインストールで同じ症状で頭を悩ませてきました。CSS、JS、画像が表示されませんでした。「静的コンテンツ」の役割がIIS7.5にインストールされていないことが原因でした。
web.configでWindows認証が有効になっている可能性があります。ローカルマシンでは、Windowsクレデンシャルが自動的に渡され、機能します。ライブサイトでは、匿名ユーザーとして扱われます(IE設定でこれを制御できますが、実際に何をしているかを理解していない限り、これを変更しないでください)。
これにより、次のことが発生します。
これは壊れているわけではなく、意図したとおりに機能していますが、これを「修正」するには、次のようにします。
間違ったアクセス許可を継承するフォルダを移動するのは、Windowsのアクセス許可の問題でした。wwwrootフォルダーに移動し、iisユーザーにアクセス許可を追加すると、正常に機能し始めます。
これをweb.configに追加します
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
web.configファイルの構成セクションでこれを使用します。
<location path="images">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="css">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="js">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
この問題は、IISがJS、CSS、画像ファイルなどの静的コンテンツをレンダリングしない場合に発生します。
この問題を解決するには、以下の手順に従う必要があります。
コントロールパネルに移動>Windowsの機能をオンまたはオフにする>インターネットインフォメーションサービス>ワールドワイドウェブサービス>一般的なHTTP機能>静的コンテンツ。
静的コンテンツがオンになっていることを確認します。
ビンゴ。そして、これで完了です。ページをハードリロードすると、すべての静的コンテンツを表示できるようになります。
web.config
私にとってこれを解決された問題に追加する
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" >
<remove name="UrlRoutingModule"/>
</modules>
</system.webServer>
私の苦痛の時間は、web.configでMIMEタイプを定義することによるものでした。開発サーバーにはこれが必要でしたが、ローカルIISはMIMEタイプが重複しているため、これを嫌っていました... web.configからこれらを削除すると、js、css、および画像が読み込まれないという問題はなくなりました。
これを修正するには:
インターネットインフォメーションサービス(IIS)に移動します
画像を読み込もうとしているウェブサイトをクリックします
[IIS]セクションで、[認証]メニューを開き、[Windows認証を有効にする]も選択します。
実稼働サイトのコピーを操作するときにローカルホストテスト環境でサイトを開発するときに、過去に役立つと思った1つの提案。正規タグを必ずコメントアウトしてください。
<!--<base href="http://www.example.com/">//-->
上記のすべての解決策を試しても問題が解決しない場合は、ASP.NETのメソッドResolveClientUrl()の使用を検討してください。
例のスクリプト:
使用する代わりに
<script src="~/dist/js/app.min.js" ></script>
メソッドを使用する
<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>
これは私が助けていた友人のために働いた私の解決策でした!
私はこれと同じ問題を抱えていました。私にとっては、IISのサーバーレベルでCache-Controlヘッダーがno-cache、no-storeに設定されていたことが原因でした。したがって、私のアプリケーションでは、以下をweb.configに追加する必要がありました。
<httpProtocol>
<customHeaders>
<remove name="Cache-Control" />
</customHeaders>
</httpProtocol>
これの考えられる原因の1つは、アプリケーションがポート443(標準SSLポート)で実行されることを想定しており、ポート443がすでに使用されていることです。Skypeがコンピューターで実行されているときに、開発者がアプリケーションを実行しようとしているときに、これに何度か遭遇しました。
信じられないことに、Skypeはポート443で動作します。これは私の意見では恐ろしい設計上の欠陥です。アプリケーションが443ではなく444で実行しようとしている場合は、Skypeをシャットダウンすると、問題は解決します。
app.UseStaticFiles();
このコードをConfigureメソッドのstarup.csに追加 しましたが、修正されています。
そして、このフォルダの許可を確認してください。
画像の使用
@Url.Content("~/assets/bg4.jpg")
スタイルでこれを使用します
style="background-image:url(@Url.Content("~/assets/bg4.jpg"))
私の場合、javascript、png、またはcssファイルがロードされていないときに、上記の回答のほとんどを試しましたが、どれもうまくいかなかったようです。
私はついに「リクエストフィルター」を見つけ、実際に有効/受け入れられたファイルタイプとして.js、.png、.cssを追加する必要がありました。
この変更を行うと、すべてのファイルが適切に提供されていました。
ブラウザコンソールに403エラーが表示される場合は、MVCバンドル構成を確認してください。バンドル名は、プロジェクト内の既存のフォルダー名と一致してはなりません。
例えば。
bundles.Add(new StyleBundle("~/Content/css")...
...フォルダ構造$(ProjectDir)\ Content \ cssがプロジェクトに存在する場合、IISは既存のフォルダ内で存在しないバンドルコンテンツを検索しようとするため、IISで問題が発生します。
代わりに、次のようなものを使用してください。
bundles.Add(new StyleBundle("~/Content/cssbundle")...
私はまったく同じ問題を抱えていて、すべての提案を試しましたが、何も得られませんでした。私に何時間もバグを犯した。いくつかの理由で、ISPがポート80をブロックしていることが判明しました。
アドバイス:トラフィックを確認してください。ポート80がローカル(ファイアウォールなど)と外部の両方で機能することを確認します。