質問者
ASP.NET4で作成したページのPNG画像が表示されない

質問
すべての返信
-
-
私の環境では、IIS 7.0上に公開したpng画像は問題なく表示されます。
MIMEも追加・削除していない為、関係ない気がします。
png画像を外部からアクセス(http経由)で表示されたとの事ですので、考えられるのは .aspxファイルで表示しようとしている画像のソースが
不適切である可能性が一番高いのではと思います。 ソースのパス指定は私もはまったことがあります。
表示可能なaaaa.jpg(例名)と同じ階層にbbbb.png(例名)を配置し、ソースをbbbb.pngで動作するか確認してみるとよいかもしれません。
答えになっていなかったら申し訳ありません。
- 回答の候補に設定 山本春海 2012年8月15日 6:27
-
> 同階層にImageフォルダ(←元pngファイルがある場所)
それが具体的にどうなっているのか分かりませんが、以下のよう
なディレクトリ構造になっていて、logo1.png または logo2.png
を表示したいとすれば、application root
|
|--account
| |
| |--login.aspx
| |
| |--image
| | |
| | |--logo1.png
|
|--image
| |
| |--logo2.pnglogin.aspx ページでは以下のようにすれば OK なはずです。
<img src="image/logo1.png" />
<img src="../image/logo2.png" />ただし、Visual Studio 標準のテンプレートで作ったとすると、
account フォルダの web.config でアクセス制限がかかっている
ので、logo1.png は表示されないはずです。(これが原因では?)- 回答としてマーク kazukazu2002 2012年8月28日 4:47
- 回答としてマークされていない kazukazu2002 2012年10月10日 5:03
-
> 上記のアクセス制限をどのように変更するとよいのでしょうか?
その前に、本当に原因が account フォルダの web.config でのア
クセス制限によるものか確認するのが先です。
先のレスにあった、> ③他の画像は表示(jpgだが)
> ファイルのURLでの表示はできています。が間違いないとすると、web.config によるアクセス制限はないはず
です。さらに、IIS の MIME の設定も問題ないし、img 要素の src
属性に設定する画像ファイルへのパス設定も問題ないはずです。そのあたり、理解しているでしょうか。理解できないまま、上のレ
スもイイカゲンに答えてませんか? -
他の方の言われたものの確認は行いました。
そのうえで、SurferOnWww様のスレだけは理解できず、確認しようがなかったSurferOnWww様の言われていることを問題解決のために調べたかったのです。
>が間違いないとすると、web.config によるアクセス制限はないはず
です。さらに、IIS の MIME の設定も問題ないし、img 要素の src
属性に設定する画像ファイルへのパス設定も問題ないはずです。上記はaccountフォルダ内のweb.configのアクセス制限と言っていたこととは別の話ですよね。同じ話だとするとちょっと言ってる意味を理解できていないです。
-
手は抜いていません。皆さんへの返答で書いてある通り、URLでの目的のpng画像の表示、静的コンテンツの有効確認、セキュリティをoffにしての確認、すべて行いました。
web.configが自体はaccountフォルダ内に存在しています。存在していることが分かっているから、これをどう変更したらよいのかわからないのです。
中身を見れば済むと書かれていますが、中身の何を見たらよいのか、SurferOnWww様は、断片的に言われるだけで、提案していただいていることが何がどうなのかわかりません。
ただ、今までSurferOnWww様がおっしゃられていたことがひも解かれた時に答えが出ているのは確かです。
web.configの内容の何をどう変える?書き加える?があれば表示されるのか、お教え願えませんでしょうか?それを行ってみて、もし表示されないのであれば、違う問題があると考えようと思っています。
-
もう一回だけ書きます。
以下の点だけでいいので、具体的にどうやって確認したか書いてく
ださい。手を抜かないで、確認に使用したコードなども含めてきち
んと説明してください。> ③他の画像は表示(jpgだが)
> ファイルのURLでの表示はできています。ディレクトリ構造、login.aspx と画像ファイルの位置、IIS のバー
ジョン、仮想ディレクトリ/アプリケーションの設定とそのエイリア
ス、「③他の画像は表示(jpgだが)」を表示した時に使ったコード、
「ファイルのURLでの表示」は具体的にどうやったのか、何も書いて
ないです。また、
> web.configが自体はaccountフォルダ内に存在しています。
であれば、何故その中身の要素をググって調べなのですか? 調べて
も分からなかったということであれば、何故それをアップして、どの
部分が問題かを聞かないのですか?そういうことをきちんとしてもらえているのであれば「手を抜かない
で」とは言いません。- 編集済み SurferOnWww 2012年10月14日 9:00 誤記訂正
-
SurferOnWww さんが回答してますが、また理解できないと困りますからもうちょっとかみくだいてあげましょか。
> web.configが自体はaccountフォルダ内に存在しています。存在していることが分かっているから、これをどう変更したらよいのかわからないのです。
> 中身を見れば済むと書かれていますが、中身の何を見たらよいのか、SurferOnWww様は、断片的に言われるだけで、提案していただいていることが何がどうなのかわかりません。
web.configファイルは単なるテキストファイルです。
VSで中身を確認することもできますし、テキストエディタで見ることもできます。
で、そこに記述されている設定については基本的にMSDNのドキュメントで解説されています。と、ここまで書いてあげないとわかんだろうと思って書いてみました。
#というか、web.configにどういう設定の記述があって、何を意味しているのか、ってきちんと理解してないと
実運用のための設定なんてできないはずなんですが。
きちんと動く環境作れてるのかなぁ、心配だなぁ。。。あおい情報システム株式会社 小野修司(どっとねっとふぁん)
-
サーバにアップロードし、外部からの閲覧において、topページに配置したpng画像が表示されないのです。
IE、firefox、chrome全て表示されません。
原因がなにか調べ、
①画像パスは問題なし
②IEのみの原因でもない
③他の画像は表示(jpgだが)
何が原因と考えられるでしょうか?
====================================================
VS2012を初めてインストールしWin2008R2サーバに、新規プロジェクトを作成し何も手を加えず
アップロードしてみました。同じ症状でPNGが表示されません。デバッグモードでは表示しますが??
お悩みの症状と同じ症状が出ています。現状いろいろ調べましたが、環境的な問題だと思ますが、
わかりません。同様のお悩みかと思います。何かわかりましたら、お教え願います。
敬具
-
同じ症状なので、このスレッドの解決まで見られると、理解と解決にいたると思います。
SurferOnWww様も小野@どっとねっとふぁん様もほかの方も大変親切な方々ですので、自分の力になる情報を頂けると思います。
SurferOnWww様・小野@どっとねっとふぁん様現在、問われている中身について理解をして返答させていただきます。
少しお待ちください。また、ご協力していただいていることに感謝いたします。
ルート構造は以下です
application root
|
|--account
| |
| |--login.aspx
|
|--login
| |
| |--loginimages
| |--login
|--logo.pngコードはCSSにおいて
background-image:url('../loginimages/login/logo.png’) no-repeat;
IISは7.5です
ほか画像は
background-image:url('../loginimages/login/ini_login.gif') no-repeat;
で表示されています
urlは
www.hogehoge.net/hogehoge/login/loginimages/login/logo.png
で表示したいpngが表示がされます
仮想パス /hogehoge
物理パス C:¥inetpub¥hogehoge¥hogehoge
エイリアス hogehoge
- 編集済み kazukazu2002 2012年10月25日 1:55
-
えーと、login.aspxのうえでlogo.pngを見せたい、んですよね?
だとすると> background-image:url('../loginimages/login/logo.png’) no-repeat;
この相対指定は明らかに間違ってるんですが。。。
むしろ
> ほか画像は
> background-image:url('../loginimages/login/ini_login.gif') no-repeat;
> で表示されていますこっちが見えるほうがおかしいんじゃないかと。
それとも、提示されてるフォルダ構成のほうが間違ってる???
あおい情報システム株式会社 小野修司(どっとねっとふぁん)
-
最初からそのようにきちんと書いてください。そうすれば
8 月始めから今まで 3 ヶ月近くも悩むことはなかったはず
です。
> background-image:url('../loginimages/login/logo.png’) no-repeat;パスを囲っている後ろの方のシングルクォート(...logo.png’
の ’ )が全角です。上のコードが、実際に使われている css から一字一句間違い
なくコピペしたのであれば、それが原因だと思います。半角に直すか、シングルクォートを前後とも削除してみてくだ
さい。
以下、小野さんのレスとダブルところがありますが・・・もし、上記が原因でなければ、パス指定が間違っているからだ
と思います。ディレクトリ構造が提示されていた通りなら、login.aspx の
中で、../loginimages/login/logo.png
は、
application root/loginimages/login/logo.png
を意味します。しかし、提示されているディレクトリ構造では
そのようなパスはありません。以下のようにしなければならな
いはずです。../login/loginimages/login/logo.png
ただ、他の画像ファイルの場合、以下で OK なのが解せないで
すが・・・> background-image:url('../loginimages/login/ini_login.gif') no-repeat;
提示されたディレクトリ構造は正しいですか? login.aspx と
logo.png の相対関係とパス設定を今一度確認してください。また、login.aspx と logo.png の相対関係を気にしなくて
済む、絶対パスまたはサイトルート相対パスで試してみてく
ださい。ASP.NET Web プロジェクトのパス
http://msdn.microsoft.com/ja-jp/library/ms178116%28v=VS.100%29.aspx
なお、Visual Studio のテンプレートで作られる Account フ
ォルダの web.config のアクセス制限は、提示されたディレク
トリ構成が正しければ、関係ありません。- 編集済み SurferOnWww 2012年10月25日 13:13 誤記訂正
-
SurferOnWww様
小野@どっとねっとふぁん様
ありがとうございます。
SurferOnWww様 すみません
> background-image:url('../loginimages/login/logo.png’) no-repeat;パスを囲っている後ろの方のシングルクォート(...logo.png’
の ’ )が全角です。上のコードが、実際に使われている css から一字一句間違い
なくコピペしたのであれば、それが原因だと思います。半角に直すか、シングルクォートを前後とも削除してみてくだ
さい。この部分は書きミスです。本来半角になっております。
この点を考慮の上で、確認しました。
login.aspxのページ上で
<div id="logo-login">
<img src="../login/loginimages/login/logo.png" width="450" height="110" alt="" />
</div>
とCSSとは別にコードを書いていました。
この状態でCSSは
background-image:url('../loginimages/login/logo.png’) no-repeat;
としており、
http://www.hogehoge.net/hogehoge/Account/login.aspx
でブラウザを見たところ、logo.pngは表示されています。
しかし、
http://www.hogehoge.net
IISの規定のドキュメントにおいて、hogehoge/Account/login.aspxと指定しています
で表示した場合、logo.pngだけが表示されません。
ページ上とCSSに重複していることが原因でしょうか?
また、CSSの方を、
background-image:url('../logo/loginimages/login/logo.png’) no-repeat;
とするとどちらでも(aspxページはそのままで)logo.pngは見れなくなります
- 編集済み kazukazu2002 2012年10月26日 2:24
-
HTML / CSSはWebブラウザーで解釈されていることは理解されていますか? Webブラウザーはコンテンツがサーバー上のどこに配置されているのか関与しません。
http://www.example.net/hogehoge/Account/login.aspx
というコンテンツ内に ../loginimages/login/logo.png という相対パスで記述があれば
http://www.example.net/hogehoge/loginimages/login/logo.png
というコンテンツをWebサーバーに要求します。
http://www.example.net
というコンテンツ内に ../loginimages/login/logo.png という相対パスで記述があれば、これ以上、親ディレクトリを指すことはできませんから、Webブラウザーとしてはお手上げです。
- 編集済み 佐祐理 2012年10月26日 1:52
-
原因としては佐祐理さんが書いているとおり、でブラウザ上でCSSがどう動作するのかわかっていないことが原因、ですね。
#CSSというより相対リンクの考え方、か。
で、そもそもIISの既定のドキュメントの使い方がおかしいかと。
たぶん接続してきたときにログインさせたいんだと思いますが、そういう場合のASP.NETの標準的なログインページの見せ方とも異なってます。ASP.NETの標準の動きとして、きちんと認証のための設定をすると、たとえばWebルートのdefault.aspxページ(このページ名は例です)に接続してきたときに指定したログインページに飛ばす、という処理ができます。
そこでログインすると、元々アクセスしにきていたdefault.aspxページにリダイレクトしてくれる、というところまで特にプログラムを記述せずにフレームワークがやってくれるようになってます。こういった仕組みを理解して、その仕組みにそった使い方をすることを考えましょう。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)
- 編集済み 小野@どっとねっとふぁん 2012年10月26日 2:35 記述不足を追記
-
> 絶対パスを試したところ、表示されませんでした。
以前は、ブラウザのアドレスバーに画像の URL 直打ちで表示されたそうですし、以下のレスもありました。それが間違いなければ、その「絶対パス」が間違っているのでしょう。
> http://www.hogehoge.net/hogehoge/Account/login.aspx
> でブラウザを見たところ、logo.pngは表示されています。絶対パス、サイトルート相対パスと言うのは、具体的に何か理解してますか?
ところで、前にもお願いしましたが、具体的にどうやって試したかぐらいは書いてはいかがですか。回答者がきちんと回答しているのに、質問者が手抜きして一行レスで済ませるというのは、はっきり言って、回答者に対してのみならずこのフォーラムの参加者全員に対して失礼だと思います。