در این جسله قصد داریم چگونگی قرار دادن فایلهای ایستا (استاتیک) Static Files ،در پروژه ASP.NET Core ،خارج از پوشه wwwroot را آموزش دهیم. به صورت پیشفرض فایلهای ایستا (استاتیک) Static Files در پروژه ASP.NET Core میبایست درون پوشه wwwroot قرارداشته باشند تا توسط میانافزار Middleware مربوطه پردازش گردند که این مطلب در جلسه هشتم با جزئیات کامل ارائه گردید.
پردازش فایلهای استاتیک (ایستا) خارج از پوشه wwwroot در ASP.NET Core
- مرحله 1: ایجاد یه پوشه با نام دلخواه، درون پوشه اصلی پروژه ASP.NET Core
- مرحله 2: ایجاد یک StaticFileOptions در صورت استفاده از میانافزار UseStaticFiles و یا FileServerOptions در صورت استفاده از میانافزار UseFileServer
- مرحله 3: اضافه نمودن فضای نام (namespace) Microsoft.Extensions.FileProviders به کلاس Startup پروژه
- مرحله 4: اضافه نمودن فضای نام System.IO به کلاس Startup پروژه
- مرحله 5: ایجاد یک FileProvider جهت معرفی پوشه ایجاد شده
- مرحله 6: استفاده از overload مناسب برای میانافزار پردازش فایل ایستا
- مرحله 7: ارسال FileOptions ایجاد شده در مراحل قبل به میانافزار
پردازش فایلهای ایستا خارج از پوشه wwwroot با میانافزار UseStaticFiles
در صورتی که برای پردازش فایلهای ایستا (استاتیک) پروژه خود، از میانافزار UseStaticFile استفاده میکنید، ابتدا میبایست یک پوشه با نام دلخواه درون مسیر اصلی پروژه خود ایجاد نمایید. سپس با استفاده از StaticFileOptions مسیر پوشه ایجاد شده را به میانافزار خود معرفی کنید. برای پیادهسازی قطعه کد زیر که مربوط به تنظیمات StaticFileOptions میباشد، شما باید دو فضای نام Microsoft.Extensions.FileProviders و System.IO را به کلاس Startup خود اضافه نمایید.
StaticFileOptions staticFileOptions = new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine
(env.ContentRootPath, "StaticFiles")),RequestPath = "/StaticFiles"
};
app.UseStaticFiles(staticFileOptions);
توجه داشته باشید در صورت اعمال تغییرات فوق، پوشه پیشفرض wwwroot برای Web App ما دیگر قابل دسترس نمیباشد. برای در دسترس بودن هر دو پوشه مربوط به فایلهای ایستا (استاتیک) Static Files شما میبایست میانافزار UseStaticFiles را مجددا به پروژه خود اضافه نمایید که در قطعه کد زیر مشخص میباشد.
StaticFileOptions staticFileOptions = new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine
(env.ContentRootPath, "StaticFiles")),RequestPath = "/StaticFiles"
};
app.UseStaticFiles(staticFileOptions); //this is for new Static Folder
app.UseStaticFiles(); //this is for wwwroot folder
پردازش فایلهای ایستا خارج از پوشه wwwroot با میانافزار UseFileServer
در صورت تمایل به استفاده از پوشه دیگری به جز wwwroot برای پردازش فایلهای ایستا (استاتیک) Static Files برای این میانافزار، تمامی مراحل مانند مراحل ذکر شده برای میانافزار UseStaticFiles میباشند. تنها تفاوت آن استفاده از FileServerOptions به جای StaticFileOptions میباشد. قطعه کد زیر نشان دهنده تغییر مورد نظر میباشد.
app.UseFileServer(); //this is for wwwroot folder
FileServerOptions fileServerOptions1 = new FileServerOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine
(env.ContentRootPath, "StaticFiles")),RequestPath = "/MyStaticFiles"
};
app.UseFileServer(fileServerOptions1); //this is for new Static Folder
ضمنا برای در دسترس بودن هر دو پوشه برای پردازش فایلهای ایستا مانند قسمت قبل نیاز به دوباره فراخوانی این میانافزار میباشد.
در صورت نیاز به جزئیات بیشتر، میتوانید ویدئو آموزشی این جلسه را تماشا نمایید. همچنین برای آگاهی از جلسات بعدی این دوره آموزشی، ما را در اینستاگرام، تلگرام و یوتیوب دنبال کنید و از این طریق با ما در ارتباط باشد.
دانلود اسلایدهای آموزشی این جلسه از اینجا