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

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

新規登録して質問してみよう
ただいま回答率
85.51%
ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

1回答

10645閲覧

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

shinkais

総合スコア10

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2018/11/18 09:34

編集2018/11/20 14:24

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.Net

1<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の記述方法に問題があるのではと考えております。
ご指導のほどよろしくお願い申しあげます。
イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/11/18 11:21

「仮想フォルダ」って何ですか? 仮想ディレクトリのまちがい?
退会済みユーザー

退会済みユーザー

2018/11/18 23:24 編集

タイトルと本文も「仮想ディレクトリ」に訂正してください。どこ(別の場所とは具体的にどこ)にどのように仮想ディレクトリを作ったのかもう少し詳しく書いてください。
退会済みユーザー

退会済みユーザー

2018/11/19 13:47 編集

> IISでのフォルダの構成ですが ← せっかく書いていただいたのですが、インデントされてなくて何だか分かりません。画像を貼れないですか?
退会済みユーザー

退会済みユーザー

2018/11/19 23:43 編集

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

退会済みユーザー

2018/11/19 23:40

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

退会済みユーザー

2018/11/19 23:42

依然として間違いがあります。「仮想ディレクト」⇒「仮想ディレクトリ」
退会済みユーザー

退会済みユーザー

2018/11/20 14:25

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

回答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/20 14:49

編集2018/11/20 14:54
shinkais

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/11/21 01: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 ソースを調べてみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問