โฟลเดอร์ App_Data ใช้สำหรับอะไรใน Visual Studio


156

เมื่อสร้างแอปพลิเคชัน ASP.NET ใหม่ใน Visual Studio ไฟล์และโฟลเดอร์สองรายการจะถูกสร้างขึ้นโดยอัตโนมัติ App_Dataหนึ่งในโฟลเดอร์เหล่านั้นเรียกว่า

นอกจากนี้เมื่อเผยแพร่เว็บไซต์โดยเลือกตัวเลือกเมนู Build->PublishInclude files from the App_Data folderช่องทำเครื่องหมายใช้ได้

ฉันถูกสมมติว่าไฟล์ที่ใส่ในไฟล์นี้และโฟลเดอร์ย่อยไม่สามารถเข้าถึงผ่านเว็บได้หรือไม่? ตัวอย่างเช่นจะปลอดภัยหรือไม่ที่จะใส่ทรัพยากรโฟลเดอร์นั้นที่ฉันต้องการใช้รหัสแอปพลิเคชันเท่านั้น

การใช้งานที่ตั้งใจจริงคืออะไร App_Dataโฟลเดอร์ที่คืออะไร?

แก้ไข:

ขอบคุณสำหรับคำตอบทั้งหมด จากคำตอบที่ได้รับจนถึงขณะนี้ฉันสนใจส่วนใหญ่ในสองจุดกล่าวถึง:

  1. App_Data เป็นจุดเก็บข้อมูลหลักสำหรับแหล่งเก็บข้อมูลแบบใช้ไฟล์
  2. เว็บนี้ไม่ควรดูได้และเป็นที่สำหรับเว็บแอพในการจัดเก็บและอ่านข้อมูล

บางคนจะสามารถระบุได้ว่าจะทำให้มั่นใจได้ว่า "ไม่สามารถดูได้ทางเว็บ"? ฉันสามารถใช้ข้อเท็จจริงนั้นเมื่อทำการปรับใช้มาตรฐานหรือฉันต้องตรวจสอบการตั้งค่า IIS บางอย่างบนเซิร์ฟเวอร์ด้วย

ในสถานการณ์ที่ฉันมีไฟล์ PDF หนึ่งชุดที่ฉันต้องการให้เข้าถึงได้จากแอปพลิเคชันเท่านั้น โฟลเดอร์ App_Data จะเป็นสถานที่ที่เหมาะสมในการใช้หรือไม่ฉันควรสร้างโฟลเดอร์แยกต่างหากและตั้งค่า IIS ด้วยตนเองเพื่อให้แน่ใจว่าเว็บไม่สามารถเข้าถึงได้หรือไม่?

คำตอบ:


119

App_Data เป็นจุดเก็บข้อมูลสำหรับแหล่งเก็บข้อมูลแบบใช้ไฟล์ (ซึ่งตรงข้ามกับที่เก็บฐานข้อมูลเซิร์ฟเวอร์ SQL เป็นต้น) เว็บไซต์ที่เรียบง่ายบางแห่งใช้ประโยชน์จากเนื้อหาที่เก็บไว้เป็น XML เช่นโดยทั่วไปแล้วค่าบริการโฮสต์สำหรับฐานข้อมูลนั้นแพง


8
ขอบคุณ annakata สำหรับคำตอบนี้ ฉันคิดว่าจุดสำคัญที่ต้องเพิ่มคือเนื้อหาของ App_Data นั้นเป็นค่าเริ่มต้นที่เว็บไม่สามารถดูได้ตาม JaredPar ที่กล่าวถึง และยังเป็นคุณแสดงความคิดเห็น "พฤติกรรมนี้สามารถแก้ไขได้จาก * .config httpHandlers"
padn

โฟลเดอร์ app_data มีการอ้างอิงไปยังบริการเว็บในพื้นที่หรือไม่? เว็บแอปพลิเคชันของฉันทำงานได้ดีในการรัน. net F5 แต่บริการบนเว็บไม่ทำงานหลังจากการบรรจุและการปรับใช้ในสถานีอวกาศนานาชาติ ... :(
bonCodigo

1
นอกจากนี้โฟลเดอร์นี้ใช้สำหรับการจัดเก็บไฟล์ฐานข้อมูลท้องถิ่น
Andrei Khotko

1
สิ่งหนึ่งที่ไม่ได้กล่าวถึงก็คือ IIS จะรีบูทกระบวนการทางเว็บเมื่อไฟล์มีการเปลี่ยนแปลง แต่ App_Data จะถูกแยกออกจากสิ่งนี้!
ปีเตอร์

43

ใน IIS ให้ไฮไลต์เครื่องดับเบิลคลิก "ร้องขอการกรอง" เปิดแท็บ "กลุ่มที่ซ่อนอยู่" "App_Data" แสดงรายการเป็นโฟลเดอร์ที่ถูก จำกัด ใช่ฉันรู้ว่ากระทู้นี้เก่าจริง แต่ก็ยังใช้ได้


25

การใช้ App_data ที่ตั้งใจไว้คือการจัดเก็บข้อมูลแอปพลิเคชันสำหรับกระบวนการทางเว็บไปยัง acess ไม่ควรดูได้จากเว็บและเป็นสถานที่สำหรับเว็บแอปในการจัดเก็บและอ่านข้อมูล


7
ไม่เพียงแค่ "ไม่ควร" สิ่งที่อยู่ในโฟลเดอร์ที่ถูกบล็อกจากการถูกเสิร์ฟโดย ASP.NET
จอห์นซีแฮน

@ จอห์นฉันอยู่ภายใต้การแสดงผลมีวิธี "เปลี่ยน" พฤติกรรมที่ ใช่แน่นอนชั่วร้ายที่จะทำเช่นนั้น แต่ผมไม่ทราบวิธีการที่พบบ่อยหรือไม่ที่เป็น
JaredPar

"ไม่สามารถดูได้" เป็นอย่างไร โฟลเดอร์ App_data มีการตั้งค่าเฉพาะใน IIS หรือไม่
padn

@ 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 (เช่นรายการของรัฐ / ประเทศ / ฯลฯ )
จอห์นซีแฮน

1
เป็นฐานข้อมูลเท่านั้นหรือไม่ ฉันสามารถพูดบางไฟล์เช่นไฟล์ pdf ที่ฉันต้องการเข้าถึงคิดว่าโค้ดเท่านั้นเช่นการใช้วิธี Response.TransmitFile
padn

5
อะไรก็ได้ - แนวคิดของข้อมูลไม่ได้ระบุประเภทไฟล์หรือรูปแบบ
annakata

13

โฟลเดอร์ App_Data เป็นโฟลเดอร์ซึ่งกระบวนการผู้ปฏิบัติงาน asp.net ของคุณมีสิทธิ์ในการใช้ไฟล์เช่นกัน แต่ไม่ได้เผยแพร่ผ่านเว็บเซิร์ฟเวอร์

ตัวอย่างเช่นเราใช้เพื่ออัปเดต CSV ท้องถิ่นของผู้ติดต่อกับเราฟอร์มหากวิธีการที่ต้องการของอีเมลล้มเหลวหรือต้องการการสืบค้นแหล่งข้อมูลใด ๆ ไฟล์ App_Data จะอยู่ที่นั่น

มันไม่เหมาะ แต่มันเป็นการถอยที่ดี


10

จากเอกสารเกี่ยวกับโครงสร้างโฟลเดอร์โครงการเว็บ ASP.NETใน MSDN:

คุณสามารถเก็บไฟล์ของโครงการเว็บไว้ในโครงสร้างโฟลเดอร์ใดก็ได้ที่สะดวกสำหรับแอปพลิเคชันของคุณ เพื่อให้ง่ายต่อการทำงานกับแอปพลิเคชันของคุณ ASP.NET ขอสงวนชื่อไฟล์และโฟลเดอร์บางอย่างที่คุณสามารถใช้สำหรับเนื้อหาบางประเภท

App_Dataมีไฟล์ข้อมูลแอปพลิเคชันรวมถึงไฟล์ฐานข้อมูล. mdf, ไฟล์ XML และไฟล์ที่เก็บข้อมูลอื่น ๆ ASP.NET จะใช้โฟลเดอร์ App_Data เพื่อจัดเก็บฐานข้อมูลภายในของแอปพลิเคชันเช่นฐานข้อมูลสำหรับการบำรุงรักษาข้อมูลสมาชิกและบทบาท สำหรับข้อมูลเพิ่มเติมโปรดดูที่รู้เบื้องต้นเกี่ยวกับสมาชิกและการบริหารจัดการความเข้าใจบทบาท


7

จุดประสงค์หลักคือเพื่อเก็บไฟล์ฐานข้อมูลแอปพลิเคชันของคุณ

และสิ่งนี้จะไม่สามารถเข้าถึงได้จากเว็บเป็นค่าเริ่มต้น


7

เราใช้เป็นพื้นที่เก็บข้อมูลชั่วคราวสำหรับไฟล์ csv ที่อัปโหลด เมื่ออัปโหลดเมธอด ajax จะประมวลผลและลบไฟล์


6

วัตถุประสงค์ที่ใช้สำหรับ App_Data คือการจัดเก็บไฟล์ที่เกี่ยวข้องกับฐานข้อมูล โดยปกติแล้วไฟล์. mdf ของ SQL Server Express

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.