none
css、jqueryが適用されない場合がある RRS feed

  • 質問

  • 現在ASP.NET MVCを使用して開発を行っているのですが、
    画面を表示した場合に、以下現象が起きてしまいます。

    ・CSSが適用されない場合がある
     (枠線などがなくなり、ラベル文言のみが表示される)
    ・jqueryが適用されない場合がある

    ※ブラウザーをIE、Chromeなど変えてみてもダメでした。

    原因を思うつく方や、対処方法をご存じの方がいらっしゃたらお教え頂きたいです。

    2015年9月26日 14:15

すべての返信

  • > 原因を思うつく方や、対処方法をご存じの方がいらっしゃたらお教え頂きたいです。

    情報不足です。今提供されている情報だけで原因を指摘できる人はたぶんいないと思います。

    せめて回答者の方でコピペすれば問題を再現できる簡単なコードをアップするなどのことはできませんか? あと、ご自分の環境(OS, .NET, IIS, MVC, Visual Studio のバージョンなど)に関する情報を最低書いてください。

    適切に情報が提供されていれば、回答者が質問者さんの状況を的確に把握でき、タイムリーで的を得た回答が得られるということで、質問者さんにもメリットがあります。ガイドラインも出ていますので目を通していただければと思います。

    フォーラムのご利用方法(質問の投稿)について
    https://social.technet.microsoft.com/Forums/ja-JP/home?forum=announceja&announcementId=587d27f8-adc8-432a-905c-81375f8a05ec

    #思いつく原因はいろいろありますが、ここでそれを一つ一つ確認しながらつぶしていくのは正しいやり方ではないです。例えて言うなら、あなたの質問は、「メールが送れないけどどうしてか?」というようなものです。原因は (1) ネットに接続されてない、(2) SMTP サーバアドレス指定の間違い、(3) メールアカウント、パスワードの間違い、(4) ポートの間違い、(5) OP25B・・・等々いろいろあるでしょうが、それを Q&A で一つ一つ確認しながら原因を特定していくのはこのフォーラムにノイズを増やす(即ち周りの迷惑)ということになるのは理解いただけるでしょうか?

    【追伸】

    Fiddler2 などのパケットキャプチャツールを使ってサーバーとのやり取り(特に CSS, jQuery の取得がどうなっているか)をチェックし、その結果を上にお願いした情報とあわせて連絡ください。


    • 編集済み SurferOnWww 2015年9月26日 15:58 【追伸】追加
    2015年9月26日 15:34
  • Fiddler2 などのパケットキャプチャツールを使ってサーバーとのやり取り(特に CSS, jQuery の取得がどうなっているか)をチェックし、その結果を上にお願いした情報とあわせて連絡ください。

    Fiddlerなど外部ツールを使用しなくても、ブラウザーの持つF12 開発者ツールのネットワークタブで、コンテンツの取得を行っているか、取得に成功しているか、得られたコンテンツは期待する内容かなどを確認すればいいかなと。

    いずれにしても.NET Frameworkとはほとんど無関係で、Webコンテンツが意図通りに作成されているか、また設定されているかどうかの問題と思います。

    2015年9月26日 22:10
  • 大変失礼致しました。

    実際のソースコードを記載することは難しいです。

    申し訳御座いません。

    また、環境としましては以下となります。

    ・OS :WindowsServer 2012 R2 (IIS側のPC) Windows7(画面を見ているPC)

    ・.NET :Ver.4.5

    ・IIS :Ver.8.5.9600.16384

    ・MVC :Ver.4.0.0.0

    ・Visual Studio :MicrosoftVisualStudioExpress2012forWeb Version 11.0.50727.1

    ・IE :Ver.11.0.9600.18015

    ・Chrome :Ver.45.0.2454.101 m

    Fiddler2で取得結果、表示したい画面自体の取得は成功していたのですが、

    そののちのCSSやJQueryの読み込みは「302」エラーとなっておりました。


    2015年9月27日 8:19
  • 

    Fiddler2の取得結果になります。

    2015年9月27日 8:35
  • 依然としてよく分かりません。HTTP 302(リダイレクト)と自分の経験からの想像ですが・・・

    IIS 上(ASP.NET 開発サーバーとか IIS Express 上ではなくて)でフォーム認証のアプリを動かしていて、CSS や jQuery ファイルがあるフォルダに対する IUSR の読み取り権限がないので、ブラウザが CSS や jQuery ファイルを要求した際に login ページにリダイレクトがかかり(302 応答となる)、結果 link タグや script タグに参照先が設定されている外部ファイルが読み込めないということのような気がします。

    IUSR が何か分からなければ以下の記事を見てください。

    IIS 7.0 での組み込みユーザーとグループ アカウントとは
    https://technet.microsoft.com/ja-jp/library/dd939094.aspx

    ASP.NET の ID オブジェクト
    http://surferonwww.info/BlogEngine/post/2014/01/20/id-objects-in-aspnet-page.aspx

    CSS や jQuery ファイルがあるフォルダはどこにあるんですか? アクセス権は適切に設定されているんですか? Web アプリのファイルがある仮想ディレクトリ / アプリケーションのフォルダに CSS や jQuery ファイルがあるなら、Users グループもしくは IUSR にそのフォルダに対する読み取り権限を与えれば解決するのでは? お試しください。


    #Visual Studio がデフォルトでプロジェクトファイルを生成する個人のフォルダには Users グループに権限は与えられてないので、そのフォルダを IIS でアプリケーションに設定して IIS 上でアプリを動かす場合は、自分で Users に読み取り権限を与えないとダメということが自分の経験でもありました。IUSR が Users グループに属するとは MSDN ライブラリになどには書いてありませんが、実際、Users グループに読み取り権限を与えて解決できました。

    2015年9月27日 9:19
  • ソースコードですが、以下シンプルなものに削っても同じように発生致しました。

    また、読み込めない場合も、F5で再読み込みを実施すると、かなりの確率で正しく読み込めます。

    ※@RenderBobyはコンテンツは空です。

    <!DOCTYPE html>
    <html lang="ja" oncontextmenu='return false'>
      <head>
        <meta http-equiv="Expires" content="0" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta http-equiv="Content-Language" content="ja" />
        <meta http-equiv="Content-Style-Type" content="text/css" />
        <meta http-equiv="Content-Script-Type" content="text/javascript" />
        <meta http-equiv="Pragma" content="no-cache" />
        <meta http-equiv="Cache-Control" content="no-cache" />
    
        <link type="text/css" href="~/Content/Common/JQueryUI/jquery-ui.min.1.11.3.css" rel="stylesheet" />
        <link type="text/css" href="~/Content/Common/JQueryUI/jquery-ui.structure.min.1.11.3.css" rel="stylesheet" />
        <link type="text/css" href="~/Content/Common/JQueryUI/jquery-ui.theme.min.1.11.3.css" rel="stylesheet" />
    
      </head>
    
      <body>
         @RenderBody()
      </body>
    </html>
    

    
    2015年9月27日 13:10
  • 話を聞いてますか?

    2015年9月27日 13:39
  • 大変失礼いたしました。

    お教え頂いた通り、IUSRに権限を付与して実施してみたのですが、

    やはり、読み込めない現象が発生したり、しなかったりという状態でございました。

    そこで、次の調査としてソースコードのどこかで実はエラーが発生しているのではと思い、

    ソースをシンプルにするということを実施し、それでも発生致しましたので、先の投稿になっておりました。

    申し訳御座いません。

    2015年9月28日 0:37
  • Fiddler2で取得結果、表示したい画面自体の取得は成功していたのですが、そののちのCSSやJQueryの読み込みは「302」エラーとなっておりました。

    302 Foundはリダイレクションを表すステータスでエラーではありません。単なる言葉遊びとしての指摘ではなく、正しい認識が原因の解決につながります。

    リダイレクトであることを知っていれば、なぜリダイレクトが行われるか、どこへリダイレクトされているのか、に興味が移ります。F12開発者ツールでもFiddler2でもかまいませんが、まずはリダイレクト先を提示してはどうでしょうか?

    # ちなみに「iis 302 原因」あたりでググるとそれらしい話はヒットします。本件が検索結果と合致する原因とは限りませんが。

    2015年9月28日 0:56
  • > お教え頂いた通り、IUSRに権限を付与して実施してみたのですが、
    > やはり、読み込めない現象が発生したり、しなかったりという状態でございました。

    自分の想像が当たっていれば、「IUSRに権限を付与」というところのやり方の問題だと思うのですが・・・

    その「想像」が当たっているかどうかを確認していただけませんか?

    (1) まず、先の私のレスに書いた下記の点:

    > IIS 上(ASP.NET 開発サーバーとか IIS Express 上ではなくて)でフォーム認証のアプリを動か
    > していて、CSS や jQuery ファイルがあるフォルダに対する IUSR の読み取り権限がないので、
    > ブラウザが CSS や jQuery ファイルを要求した際に login ページにリダイレクトがかかり(302
    > 応答となる)、結果 link タグや script タグに参照先が設定されている外部ファイルが読み込め
    > ないということのような気がします。

    (書いてあることの意味が分からないということでしたら、その旨連絡してください。そうでないと、こちらは分かっているものとして話を進めてしまいますので、話が噛み合わなくなります)


    (2) 最初のページ(Fiddler2 の取得結果の画像の一番上のページ)は ASP.NET が扱う動的コンテンツで、それが取得できる(200 応答となる)のは、ワーカープロセスには読み取り権限が与えられているから。


    (3) あとでコードをアップされた「シンプルなもの」も同様に ASP.NET が扱う動的コンテンツなのでそのページだけは取得できる。.html ファイルのような静的コンテンツは取得できない。


    (4) Fiddler2 の取得結果で 302 応答となった応答ヘッダの Location はログインページになっている。


    (5) フォーム認証でログインしているときは jQuery, CSS ファイルを取得できる。匿名アクセスのときは取得できない。(何故そのような違いがあるかというと、先のレスで紹介した「ASP.NET の ID オブジェクト」に書いてあるように、匿名アクセスの場合は ISUR がログイン済みの場合はワーカープロセスが jQuery, CSS ファイルを取得に行くからです。)


    (6) 「したり、しなかったり」というのは上記 (5) のログイン済みか否かの違い、および一旦ブラウザが取得すると 2 回目以降はブラウザのキャッシュから取得するからだと思います。(なので、検証する際は必ずブラウザのキャッシュを消去してから試してください)


    以上よろしくお願いします。

    2015年9月28日 2:40