Visual Studioで使用されるApp_Dataフォルダーは何ですか?


156

Visual Studioで新しいASP.NETアプリケーションを作成すると、いくつかのファイルとフォルダーが自動的に作成されます。これらのフォルダの1つはと呼ばれApp_Dataます。

また、メニューオプションを選択してWebサイトを公開する場合はBuild->Publish、チェックボックスを使用できますInclude files from the App_Data folder

このファイルとそのサブフォルダーに配置されたファイルがWeb経由でアクセスできないことを想定していますか?たとえば、アプリケーションコードでのみ使用する予定のリソースをそのフォルダーに配置しても安全ですか?

App_Dataフォルダの実際の使用目的は何ですか?

編集:

たくさんの回答ありがとうございます。これまでに受け取った回答から、私は主に次の2つの点に関心があります。

  1. App_Dataは基本的に、ファイルベースのデータストアのストレージポイントです。
  2. これはWebで表示できないようにする必要があり、Webアプリがデータを格納してそこから読み取る場所です

誰かが「Webで表示できない」ことを保証する方法を指定できますか?標準の展開を実行するときにその事実に依存できますか、それともサーバーのIIS設定も確認する必要がありますか?

アプリケーションからのみアクセスできるようにする一連のpdfファイルがある場合。App_Dataフォルダーを使用するのに適切な場所でしょうか、それとも別のフォルダーを作成し、手動でIISを設定してWebからアクセスできないようにする必要がありますか?

回答:


119

App_Dataは基本的に、ファイルベースのデータストア(たとえば、SQLサーバーデータベースストアとは対照的)のストレージポイントです。単純なサイトの中には、XMLとして格納されているコンテンツにそれを利用するものがあります。たとえば、通常、DBのホスティング料金が高額な場合です。


8
この回答をありがとうございます。追加する重要な点は、JaredParで言及されているように、App_DataのコンテンツはデフォルトではWebで表示できないことです。また、「この動作は* .config httphandlersから変更できます」とコメントしたようです
padn '10

app_dataフォルダーにはローカルWebサービスへの参照が含まれていますか?私のWebアプリケーションは.net F5実行で正常に動作します。しかし、ISSでパッケージ化して展開した後、Webサービスは機能しません... :(
bonCodigo

1
また、このフォルダは、ローカルデータベースファイルを格納するために使用されます。
Andrei Khotko、2017年

1
言及されていないことの1つは、ファイルが変更されたときにIISがWebプロセスを再起動することですが、App_Dataはこれから除外されています。
Peter

43

IISで、マシンを強調表示し、[リクエストフィルタリング]をダブルクリックして、[非表示セグメント]タブを開きます。「App_Data」は制限されたフォルダとしてリストされています。はい、私はこのスレッドが本当に古いことを知っていますが、これはまだ適用されます。


25

App_dataの使用目的は、Webプロセスがアクセスするアプリケーションデータを格納することです。これはWebで表示できないようにする必要があり、Webアプリがデータを保存および読み取る場所です。


7
"すべきではない"だけでなく、そのフォルダ内のすべてのものがASP.NETによるサービスからブロックされます
John Sheehan

@ジョン、私はその振る舞いを「変える」方法があるという印象を受けました。はい、間違いなく悪はそうするが、私は知らないどのような共通のか
JaredPar

その「見えない」はどのようにして達成されたのですか?App_dataフォルダーにはIISの特定の設定がありますか?
パッド

@padn、私はスタックについて100%確信はありませんが、それはIISまたはAsp.Netスタックで特別なケースです。 msdn.microsoft.com/en-us/library/ex526337.aspx
JaredPar

2
iircこの動作は* .config httphandlersから変更できます
annakata

15

これは、Sql Server Express、Access、SQLiteなどの組み込みデータベースを配置する場所です。


1
または、サイトが使用する可能性のあるその他のデータ、たとえばXMLファイル(州/国などのリストなど)
John Sheehan

1
そのときだけデータベースですか?たとえば、Response.TransmitFileメソッドを使用して、コードだけを考えてアクセスしたいPDFファイルなどをそこに置くことはできますか?
パッド

5
何でも-データの概念はファイルタイプまたはフォーマットを指定しません
アナカタ09

13

App_Dataフォルダーは、asp.netワーカープロセスがファイルシステム権限を持っているフォルダーですが、Webサーバーを通じて公開されません。

たとえば、お問い合わせフォームのローカルCSVを更新するために使用します。電子メールの優先メソッドが失敗した場合、またはデータソースのクエリが必要な場合は、App_Dataファイルがそこにあります。

これは理想的ではありませんが、適切なフォールバックです。


10

MSDNのASP.NET Webプロジェクトのフォルダー構造に関するドキュメントから:

アプリケーションに便利な任意のフォルダ構造でWebプロジェクトのファイルを保持できます。アプリケーションでの作業を簡単にするために、ASP.NETは、特定の種類のコンテンツに使用できる特定のファイル名とフォルダー名を予約しています。

App_Dataには、.mdfデータベースファイル、XMLファイル、およびその他のデータストアファイルを含むアプリケーションデータファイルが含まれています。App_DataフォルダーはASP.NETによって使用され、メンバーシップやロール情報を維持するためのデータベースなど、アプリケーションのローカルデータベースを格納します。詳細については、「メンバーシップの概要および「役割管理について」参照してください。


7

主な目的は、アプリケーションのデータベースファイルを保持することです。

そして、これはデフォルトではWebからアクセスできません。


7

アップロードしたcsvファイルの一時的な保存領域として使用します。アップロードされると、ajaxメソッドがファイルを処理して削除します。


6

App_Dataの使用目的は、データベース関連ファイルを格納することです。通常、SQL Server Expressの.mdfファイル。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.