به روزرسانی سایت Asp.net و نحوه حفظ فایل های Static
سلام
حین ارسال نسخه جدید نرم افزار به سرور، 2 تا سوال برام پیش اومد.
1.اگر محل ذخیره فایل های آپلودی توسط کاربران رو در پوشه www.root ذخیره کنم و فقط نام آنها رو در دیتابیس ذخیره کنم و چند وقت از پابلیش نسخه ی اول میگذره و کابران کلی فایل آپلود کردن حال اگر من نسخه اول رو از هاست پاک کنم و نسخه دوم رو پابلیش کنم عملا تمام فایل های آپلود شده پاک میشن و در نسخه دوم هیچ فایلی وجود نداره.یا اینکه لزوم به پاک کردن نسخه اول نیست ؟ پس نسخه دوم رو چطور جایگزین کنم؟
2.اگر مایگریشن جدید به دیتابس بزنم مثلا فیلدی کم و زیاد کنم یا جدولی رو اضاف کنم و بخوام به سمت سرور ارسال کنم طوری که دیتای اولیه از دیتابیس قبلی پاک نشود چطور عمل کنم؟
پاسخ هوش مصنوعی
برای حفظ فایل های استاتیک و آپلودی در ASP.NET هنگام به روزرسانی، می توانید از روش های زیر استفاده کنید:
1. برای جلوگیری از از بین رفتن فایل های آپلود شده، بهتر است فایل های آپلودی را در پوشه ای جدا از پوشه ی نشر (publish) برنامه قرار دهید. به عنوان مثال، می توانید یک پوشه به نام uploads
در سطح ریشه ی دایرکتوری وب سرور ایجاد کنید. سپس هنگام آپلود فایل ها، آدرس این پوشه را در دیتابیس ذخیره کنید.
در این صورت، وقتی نسخه دوم برنامه را منتشر می کنید، این پوشه و محتویات آن همچنان در سرور باقی می ماند.
بهتر است مراحل زیر را دنبال کنید:
- فایل های آپلودی را در یک مسیر خاص خارج از پوشه ی wwwroot ذخیره کنید.
- آدرس فایل ها را در دیتابیس ذخیره کنید.
- هنگام معرفی نسخه جدید، فقط حاوی فایل های مربوط به برنامه باشد و پوشه ی آپلودها را نادیده بگیرید.
2. برای مدیریت تغییرات در پایگاه داده بدون از دست دادن داده های موجود، از Migrations
استفاده کنید. زمانی که شما یک migration ایجاد می کنید، تغییرات اساسی (مانند حذف یا اضافه کردن فیلد) به گونه ای پیاده سازی می شود که داده های اولیه از دیتابیس پاک نشوند.
برای اجرای migration، از دستورات زیر استفاده کنید:
- در Package Manager Console:
Add-Migration MigrationName
Update-Database
با این کار، می توانید ساختار دیتابیس خود را به روز کنید و به داده های موجود آسیبی نرسد. اطمینان حاصل کنید که قبل از اعمال هرگونه migration، یک نسخه پشتیبان از دیتابیس داشته باشید.
وقتی شما می خواید سایتتون رو به روز رسانی کنید و نسخه جدید رو جایگزین نسخه قبلی کنید ابتدا باید پروژه رو پابلیش کنید. وقتی پروژه رو پابلیش میکنید، فولدر wwwroot که در واقع روت سایت شما هست و فایل های static و ثابت شما مثل فایلهای css، js، تصاویر و ... هم داخلش هست در کنار فایلهای پابلیش شده وجود داره.
اما چون شما سایتتون از قبل داره کار میکنه دیگه نباید فولدر wwwroot رو هم جایگزین کنید. بنابراین موقع آپدیت فولدر wwwroot رو حذف نکنید و از همین فولدر استفاده کنید تا اطلاعات قبلی از بین نره.
در مورد سوال دوم هم یا باید از ابتدا پروژتون رو جوری تنظیم کنید که با مایگریشن آپدیت بشه که روشی سخت هست و خیلی هم خطا براتون پیش میاد. یا اینکه هر تغییری که در دیتابیس ایجاد میشه یک اسکریپت از تغییرات بسازید و روی دیتابیس اصلی اجرا کنید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2