web-dev-qa-db-ja.com

CSS、画像、JSがIISにロードされていません

私のすべてのアプリケーションは正常に機能していましたが、IISの下のすべてのサイトがcss、イメージ、スクリプトをロードしていません。ログインページにリダイレクトします。

ログインするとうまくいきます。例えばmysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

ローカルマシンでは、ログインせずに正常に動作します。

107
Imran Rashid

それは間違ったアクセス許可を継承するフォルダーを移動するWindowsアクセス許可の問題でした。 wwwrootフォルダーに移動してiisユーザーにアクセス許可を追加すると、正常に動作し始めます。

6
Imran Rashid

問題は、IISが静的コンテンツを提供していない可能性があります。静的コンテンツはここで設定できます。 enter image description here

ソース: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/

ウィンドウズ10:

windows 10 version of the above dialog

164
Matt Kocaj

同じ問題がありました。WindowsServer 2012 R2のIIS 8.5のASP.Net 4.5にWebアプリケーションをインストールしたときに、認証されていないページがCSS、JS、および画像をロードしませんでした。

  1. 静的コンテンツの役割をインストールしました
  2. WebアプリケーションはIISのwwwrootフォルダーにあり、すべてのWindowsフォルダーのアクセス権はそのままでした(IIS_IUSRSを含むデフォルトのアクセス権)
  3. CSS、JS、および画像を含むすべてのフォルダーに承認を追加しました。
  4. Windows共有にWebアプリケーションフォルダーがあったので、@ imran-rashidの提案に従って共有を削除しました

まだ、問題を解決するものは何もなかったようです。最後に、匿名ユーザーのIDをアプリプールIDに設定してみて、動作を開始しました。

Click on the Authentication FeatureEdit the Anonymous AuthenticationChange to App Pool Identity

私は数時間頭を打ちましたが、この反応が私の仲間の開発者の苦痛を救うことを願っています。

これがなぜ機能しているのか本当に知りたいです。何かご意見は?

149
Moiz Tankiwala

私は同様のエラーがありました、私のコンソールは次のように見えました:

error

私の問題は、会社が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/)を返します。

17
Ogglas

これはあなたの質問には答えないかもしれませんが、新しいIISインストールで同じ症状で頭を打ちました。 CSS、JS、および画像は表示されませんでした。 「静的コンテンツ」ロールがIIS 7.5にインストールされていなかったことが原因でした。

14
user23462

web.configからstaticContentセクションを削除してみてください。

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>
14
intrepidis

おそらくweb.configでWindows認証が有効になっています。ローカルマシンでは、Windows資格情報が自動的に渡され、機能します。ライブサイトでは、匿名ユーザーとして扱われます(IEの設定でこれを制御できますが、自分が何をしているのか本当にわかっていない限り、これを変更しないでください)。

これにより、以下が発生します。

  • 明示的にログインする必要があります。
  • 認証されていないため、スクリプトやCSSなどのリソースはログインページで提供されません。

これは壊れておらず、意図したとおりに機能していますが、これを「修正」するために:

  • ログインが必要ない場合は、web.configの認証タイプを変更します。
  • そして/または、CSS、画像、スクリプトなどを含むディレクトリにweb.configを追加して、承認ルールを指定します。
7
Tim Medora

これをweb.configに追加します

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
6
Mathias F

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>
5
Rohit Vyas

私が苦労したのは、web.configでMIMEタイプを定義したためです。開発サーバーにこれが必要でしたが、ローカルIISはMIMEタイプを複製したため嫌いでした。これらをweb.configから削除すると、js、css、およびイメージがロードされない問題がなくなりました。

2
peroija

web.configにこれを追加すると、問題が解決しました

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" >
      <remove name="UrlRoutingModule"/>    
    </modules>
</system.webServer>
2
ihebiheb

これを修正するには:

インターネットインフォメーションサービス(IIS)に移動します

画像をロードしようとしているウェブサイトをクリックします

IISセクションで、[認証]メニューを開き、Windows認証も有効にします。

1
Naijalivemedia

同じ問題がありました。私にとっては、IISのサーバーレベルでCache-Controlヘッダーがno-cache、no-storeに設定されていたためです。したがって、私のアプリケーションでは、web.configに以下を追加する必要がありました。

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>
1
Daniel Cox

私の場合、

IISはlocalhostですべてをロードできますが、テンプレートファイルapp.tag192.168.0.123からロードできませんでした

.tag拡張子がリストになかったためです。

IIS MIME types

1
Hiep

実稼働サイトのコピーを使用してlocalhostテスト環境でサイトを開発するときに、私が過去に役立つことがわかった1つの提案。正規のタグをコメント化してください:

  <!--<base href="http://www.example.com/">//-->
1
yardpenalty

上記のソリューションをすべて試しても問題が解決しない場合は、ASP.NETのメソッドResolveClientUrl()の使用を検討してください。

例のスクリプト:

使用する代わりに

<script src="~/dist/js/app.min.js" ></script>

メソッドを使用する

<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>

これは私が助けていた友人のために働いた私の解決策でした!

1
KeitelDOG

この原因の1つは、アプリケーションがポート443(標準SSLポート)で実行されることを期待しており、ポート443が既に使用されていることです。 Skypeがコンピューターで実行されている間に、開発者がアプリケーションを実行しようとして、これに何度か遭遇しました。

信じられないほど、Skypeはポート443で動作します。これは私の考えでは恐ろしい設計上の欠陥です。アプリケーションが443ではなく444で実行しようとしている場合は、Skypeをシャットダウンすると問題はなくなります。

0

Configureメソッドのstartup.csにこのコードをapp.UseStaticFiles();を追加しましたが、修正されています。

そして、このフォルダーに対する許可を確認してください。

0
Metin Atalay

画像用

@Url.Content("~/assets/bg4.jpg")

スタイルでこれを使用する

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))
0