質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.62%

ASP.NETの仮想ディレクトリの作成について

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,852

shinkais

score 10

ASP.NETの仮想ディレクトリの作成について

現在ASP.NETにて画像を表示するサイトを作成しています。
IISの静的コンテンツを有効にしてASPのプログラムの中に
画像フォルダを作成して、imageUrlでフォルダの画像を選択すると
Web上では正常に表示されます。
以下ソースコードです。

 <asp:Image ID="Image1" runat="server" Height="430px" ImageUrl="~/pic/IMG_0645.png"  Width="354px" />


実際に保管している画像は別の場所のため仮想ディレクトリをIIS上で追加してそのフォルダの画像を表示ようとしていますが
表示されません。

仮想ディレクトリ名はpicZZとしています。

 該当のソースコード

<asp:Image ID="Image1" runat="server" Height="430px" ImageUrl="~/picZZ/IMG_0645.png"  Width="354px"/>

 試したこと

IIS上で仮想ディレクトリのセキュリティでEveryOneの
アクセスの許可をすべて許可にしています。
共有タグで
ネットワークのファイルとフォルダの共有でEvryOneを追加しています。

考えられる原因として仮想フォルダのパスがASP.NETで正常に認識できていなと
思います。 どなたかお分かりの方がいらしたらお手数ですが教えてくださいますようお願い申し上げます。

開発環境
OS Windows10pro
visual Stadio 2017 
.NET FramewORK バージョン
V4.0.30319

>「仮想フォルダ」って何ですか? 仮想ディレクトリのまちがい?
すいません 仮想フォルダではなく仮想ディレクトリの間違いです。
よろしくお願いします。

追記
surferOnWww様 返信ありがとうございます。
掲示板の使い方が不慣れなためご無礼などありましたらお許しください。

IISでのフォルダの構成ですが

▽PC名
|--アプリケーションプール
▽--サイト

▽--Default Web Site
>aspnet_client
▽--ASPNETSample
|--Account
|++App_Code
>bin
>Contnt
>fonts
>pic
>picZZ ←これが仮想ディレクトリです
|--IMG_0645.png ←配置した画像データです
>Scripts

となっております。

ASPのフォルダ名でpicのフォルダはASP.NETの画面で直接フォルダを作成して
画像ファイルを配置しました。
配置直後で作成したwebフォームではIISの設定で
静的コンテンツが有効になっていなかったため
画像が表示されず随分と悩みました。

静的コンテンツを有効にする設定で画像が表示されていることを考えると 
仮想ディレクトリのパスがASP.NETで識別できていないと考えています。
ご指導のほど宜しく御願いします。

SurferOnWwwさま
お世話になっております。 IISのフォルダの構成画像を添付いたしました。
ご指導のほどよろしくお願いします。
イメージ説明

SurferOnWwwさま
お世話なります。

>「どこ」とお聞きしたのは、物理フォルダのことなのですが。IIS Manager ではなくて、エクスプローラで見たときのものです。

失礼しました。 エクスプローラ上の仮想ディレクトリの位置と
問題のある画像のURLで表示した画像をセットで添付させていただきます。
以下、表示されない画像をインターネットエクスプローラーで検索したときのURLです。

localhost/ASPNETSample/picZZ/IMG_0645.png
webブラウザ上では問題のある画像は正常に表示されます。
このことから画像ではなく仮想ディレクトリのURLの記述方法に問題があるのではと考えております。
ご指導のほどよろしくお願い申しあげます。
イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • SurferOnWww

    2018/11/20 08:40

    ブラウザのアドレスバーに問題の画像の URL を直接入力して要求をかけるとエラーメッセージが返ってきませんか? それに原因を推定できる有用な情報が含まれているかもしれません。調べてください。

    キャンセル

  • SurferOnWww

    2018/11/20 08:42

    依然として間違いがあります。「仮想ディレクト」⇒「仮想ディレクトリ」

    キャンセル

  • SurferOnWww

    2018/11/20 23:25

    ブラウザのアドレスバーに URL を打ち込んで問題なく表示されるということは、仮想ディレクトリの設定などは問題ないはずです。とすると、Image コントロールの ImageUrl の設定間違いが怪しいと思います。ブラウザのアドレスバーに入力した画像の http から始まる URL を設定してみたらどうなりますか?

    キャンセル

回答 1

0

SurferOnWwwさま
お世話なります。
>ブラウザのアドレスバーに URL を打ち込んで問題なく表示されるということは、
>仮想ディレクトリの設定などは問題ないはずです。
>とすると、Image コントロールの ImageUrl の設定間違いが怪しいと思います。
>ブラウザのアドレスバーに入力した画像の http から始まる URL を設定してみたらどうなりますか?

ご指導の通りhttpから始まるアドレスで再度検証してみました。
http://192.168.10.4/ASPNETSample/picZZ/IMG_0645.png
をWebブラウザで打ち込むと正常に表示されました。

ImageUrlにもhttpから始まるアドレスを代入しました。
以下代入したURLです。 ※IPアドレスは固定しています。
http://192.168.10.4/ASPNETSample/picZZ/IMG_0645.png

代入後にASP.NETのブラウザで表示で表示したところ正常に表示されました。
検証のためhttp://を削除して
192.168.10.4/ASPNETSample/picZZ/IMG_0645.png
で表示しようとすると画像は表示されませんでした。

このことにより、仮想ディレクトリでの画像表示にはhttp://から始まる
アドレスにて指定することで表示できるということがわかりました。

SurferOnWwwさまのご指導のおかげで問題は解決とさせていただきます。

今後も至らないことでご迷惑をお掛けすると思いますが、
ご指導のほどよろしくお願いいたします。

本日は遅くまでお付き合いいただきありがとうございました。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/21 10:40 編集

    > 仮想ディレクトリでの画像表示にはhttp://から始まるアドレスにて指定することで表示できるということがわかりました。

    それは違います。仮想ディレクトリだからと言って http で始まるアドレスを使う必要は全くありません。

    以下の記事を熟読して理解してください。今後のためにブラウザの「お気に入り」に登録しておくことをお勧めします。

    ASP.NET Web サイトのパス
    https://msdn.microsoft.com/ja-jp/library/ms178116%28v=VS.100%29.aspx

    記事に書いてありますが、http で始まるのは「絶対 URL パス」と言って、外部 Web サイトのリソースを参照する場合に使われます。今回のケースではリンク切れになる可能性があるというデメリットしかありません。

    今回のようなケースでは「サイト ルート相対パス」か、ASP.NET のサーバーコントロールでパスを指定する場合はルート演算子 (~) を使うことをお勧めします。

    ただ、最初の質問で ImageUrl="~/picZZ/IMG_0645.png" とルート演算子 (~) を使っていたのに何故パスが通らなかったのかは分かりません。html ソースを調べてみてください。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る