عدم سرو شدن فایل های استاتیک زمان پابلیش
minaakh opened this issue · comments
سلام
فایل های استاتیک من در زمان دولوپ مشکلی ندارن و همه سرو میشن ولی وقتی پابلیش میکنم دیگه فایل های استاتیک سرو نمیشن و خطای 410 داده میشه و اونها رو پیدا نمیکنه.
همین طور من به جای
bower.json
اومدم از
package.json
هم استفاده کردم و دستور
npm i
رو زدم و بعد
bundleconfig.json
رو بر مبنای
node_modules
به روز کردم و در نهایت هم
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "bower_components")),
RequestPath = "/bower_components",
EnableDirectoryBrowsing = false
});
رو به
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),
RequestPath = "/wwwroot",
EnableDirectoryBrowsing = false
});
تغییر دادم چون اگر از
RequestPath = "/bower_components",
یا
RequestPath = "/node_modules",
استفاده میکردم زمان پابلیش خطا میداد که فولدر وجود نداره
ولی در این 2 حالت هم باز فایل های استاتیک سرو نمیشن
dotnet publish -c Release
اين دستور خطاهاي احتمالي را نمايش ميدهد و در اينجا محل پوشهي نود در فايل آغازين برنامه اهميتي ندارد چون باندلر فقط دو فايل
wwwroot\js
wwwroot\css
را توليد ميكند و برنامه فقط از اين دو فايل استفاده ميكند. اگر تنظيمات باندلر را صحيح وارد نكرده باشيد، اين دو فايل توليد نميشوند
ممنون ولی با دستور فوق هم خطا ندارم و فقط وارنینگ دارم
تنظیمات باندلر رو هم تغییری داخلش ندادم
با دستور
dotnet boxilink.dll
داخل فولدر پابلیش خطای
Unhandled Exception: System.ArgumentException: The directory name D:\Projects\BoxiLink\src\Boxilink\bin\Release\netcoreapp2.0\publish\node_modules\ is invalid.
Parameter name: path
at System.IO.FileSystemWatcher..ctor(String path, String filter)
at System.IO.FileSystemWatcher..ctor(String path)
at Microsoft.Extensions.FileProviders.PhysicalFileProvider.CreateFileWatcher(String root)
at Boxilink.Startup.Configure(ILoggerFactory loggerFactory, IApplicationBuilder app, IHostingEnvironment env) in D:\Projects\BoxiLink\src\Boxilink\Startup.cs:line 100
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
at Boxilink.Program.Main(String[] args) in D:\Projects\BoxiLink\src\Boxilink\Program.cs:line 13
داده میشه که برای همین من مجبورم
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "bower_components")),
RequestPath = "/bower_components",
EnableDirectoryBrowsing = false
});
یا
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "node_modules")),
RequestPath = "/node_modules",
EnableDirectoryBrowsing = false
});
رو به
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")),
RequestPath = "/wwwroot",
EnableDirectoryBrowsing = false
});
تغییر بدم
که در این صورت هم خطای 410 برای فایل های استاتیک داده میشه
تنظيمات فايل پروايدر اينجا اساسا اضافي هستند چون فايل layout برنامه فقط دو فايل زير را استفاده ميكند
css/site.min.css
js/site.min.js
اين دو فايل هم حاصل كار باندلر هستند و مطلقا نيازي به پابليش پوشهي اضافي ديگري نيست. همينقدر كه اين دو فايل را در wwwroot داشته باشيد، برنامه كار ميكند.
تنظيمات اضافهتر را هم حذف كنيد
بنابراين شما بايد بررسي كنيد كه چه فايلهايي در فايل layout مدخلي دارند. در اينجا فقط و فقط اين دو فايل هستند كه حاصل پردازش و يكي كردن دهها فايل از مسيرهاي مختلف هستند
اين دو فايل بايد در پابليش نهايي حضور داشته باشند و مطابق آزمايش من حضور دارند
پروژه براي استفاده از ان پي ام به روز شد
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related problems.