25

画像 URL プロパティを App_Data フォルダーにある asp 画像コントロールに設定すると、画像はページ デザイン ビューに表示されますが、ブラウザーには表示されません。

<form id="form1" runat="server">
<div>
    <asp:Image ID="Image1" runat="server" ImageUrl="~/App_Data/p3.jpg" />
</div>
</form>

わかりやすいようですが、画像が表示されていません。

4

8 に答える 8

47

The App_Data folder is a special folder reserved for data such as database files and so on, and will NOT render out any contents on the web. This is by design, and intentional and cannot be changed (as far as I know).

Your images do definitely not belong into the App_Data subfolder - put them into a /images folder or something more appropriate.

于 2009-10-05T12:31:03.247 に答える
11

App_Data画像はフォルダに保存しないでください。これは、.mdb データベース ファイルなど、ユーザーに直接提供してはならないファイル用に予約されています。

サイトのルートから/Resourcesorフォルダーを作成します。/Resources/Images

于 2009-10-05T12:33:07.570 に答える
5

同意しません。App_Data フォルダーに画像を隠し、独自の http ハンドラーを作成する場合、画像を保護し、表示する前に画像に著作権テキストなどを追加できます。

誰もが手に入れたくない高解像度の写真があり、http-handler で画像を縮小して著作権テキストを入れるときにこれを行います。すごい!

于 2010-09-29T20:34:34.793 に答える
3

さて、不可能なことをする時が来ました... app_data フォルダーから直接画像をロードすることはできませんが、app_data フォルダーから画像ファイルを読み取ってクライアントに送り返す独自の http ハンドラーを作成できます。これは回避策ですが、一般に、データはアプリケーションのみが読み取ることができるデータを対象としています。ハンドラーにデータを読み取らせることで、それらの画像を返すことができます。

しかし、それは悪い習慣であり、もしあなたが私のために働いていたら、あなたはすぐにクビになるでしょう!!!

于 2009-10-05T12:40:25.933 に答える
1

App_Data フォルダーのコンテンツは提供できますが、直接提供することはできません。
直接アクセスは不可能であり、間接アクセスは推奨されません。意図的なものです。

ただし、仮想パスを追加するとこれが可能になります。この質問を参照してください


上位 3 つの回答が目的にかなっていると思います。
イメージをグローバルまたはローカルのリソース フォルダーに保存します。これらは特別なフォルダーでもあり、プログラムでコンテンツにアクセスできます。

于 2012-12-17T16:42:13.187 に答える