私のすべてのアプリケーションは正常に機能していましたが、IISの下のすべてのサイトがcss、イメージ、スクリプトをロードしていません。ログインページにリダイレクトします。
ログインするとうまくいきます。例えばmysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png
ローカルマシンでは、ログインせずに正常に動作します。
それは間違ったアクセス許可を継承するフォルダーを移動するWindowsアクセス許可の問題でした。 wwwrootフォルダーに移動してiisユーザーにアクセス許可を追加すると、正常に動作し始めます。
問題は、IISが静的コンテンツを提供していない可能性があります。静的コンテンツはここで設定できます。
ソース: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/
ウィンドウズ10:
同じ問題がありました。WindowsServer 2012 R2のIIS 8.5のASP.Net 4.5にWebアプリケーションをインストールしたときに、認証されていないページがCSS、JS、および画像をロードしませんでした。
まだ、問題を解決するものは何もなかったようです。最後に、匿名ユーザーのIDをアプリプールIDに設定してみて、動作を開始しました。
私は数時間頭を打ちましたが、この反応が私の仲間の開発者の苦痛を救うことを願っています。
これがなぜ機能しているのか本当に知りたいです。何かご意見は?
私は同様のエラーがありました、私のコンソールは次のように見えました:
私の問題は、会社が1つのトップドメインを使用し、サブドメインを使用していないため、サイトをサブフォルダーで実行していたことです。このような:
Host.com/app1
Host.com/app2
私のコードは、localhostで正常に動作するが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" />
~
対/
の説明:
/
-サイトのルート~/
-アプリケーションのルートディレクトリ/
は、サイトのルート(http://Host.com/
)を返します。
~/
は、アプリケーションのルート(http://Host.com/app1/
)を返します。
これはあなたの質問には答えないかもしれませんが、新しいIISインストールで同じ症状で頭を打ちました。 CSS、JS、および画像は表示されませんでした。 「静的コンテンツ」ロールがIIS 7.5にインストールされていなかったことが原因でした。
web.configからstaticContentセクションを削除してみてください。
<system.webServer>
<staticContent>
...
</staticContent>
</system.webServer>
おそらくweb.configでWindows認証が有効になっています。ローカルマシンでは、Windows資格情報が自動的に渡され、機能します。ライブサイトでは、匿名ユーザーとして扱われます(IEの設定でこれを制御できますが、自分が何をしているのか本当にわかっていない限り、これを変更しないでください)。
これにより、以下が発生します。
これは壊れておらず、意図したとおりに機能していますが、これを「修正」するために:
これを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>
私が苦労したのは、web.configでMIMEタイプを定義したためです。開発サーバーにこれが必要でしたが、ローカルIISはMIMEタイプを複製したため嫌いでした。これらをweb.configから削除すると、js、css、およびイメージがロードされない問題がなくなりました。
web.config
にこれを追加すると、問題が解決しました
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" >
<remove name="UrlRoutingModule"/>
</modules>
</system.webServer>
これを修正するには:
インターネットインフォメーションサービス(IIS)に移動します
画像をロードしようとしているウェブサイトをクリックします
IISセクションで、[認証]メニューを開き、Windows認証も有効にします。
同じ問題がありました。私にとっては、IISのサーバーレベルでCache-Controlヘッダーがno-cache、no-storeに設定されていたためです。したがって、私のアプリケーションでは、web.configに以下を追加する必要がありました。
<httpProtocol>
<customHeaders>
<remove name="Cache-Control" />
</customHeaders>
</httpProtocol>
実稼働サイトのコピーを使用してlocalhostテスト環境でサイトを開発するときに、私が過去に役立つことがわかった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>
これは私が助けていた友人のために働いた私の解決策でした!
この原因の1つは、アプリケーションがポート443(標準SSLポート)で実行されることを期待しており、ポート443が既に使用されていることです。 Skypeがコンピューターで実行されている間に、開発者がアプリケーションを実行しようとして、これに何度か遭遇しました。
信じられないほど、Skypeはポート443で動作します。これは私の考えでは恐ろしい設計上の欠陥です。アプリケーションが443ではなく444で実行しようとしている場合は、Skypeをシャットダウンすると問題はなくなります。
Configureメソッドのstartup.csにこのコードをapp.UseStaticFiles();
を追加しましたが、修正されています。
そして、このフォルダーに対する許可を確認してください。
画像用
@Url.Content("~/assets/bg4.jpg")
スタイルでこれを使用する
style="background-image:url(@Url.Content("~/assets/bg4.jpg"))