Asp.NetCore小知识
1.MVC/Razor等Web项目在部署的时候Views文件夹默认会被编译成dll文件,可有时候我们又需要修改这些文件,不想重新发布一次,此时就可以这样做。
1.安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation包,
2.Start中添加services.AddControllersWithViews().AddRazorRuntimeCompilation();
3.双击项目在PropertyGroup中添加<RazorCompileOnPublish>false</RazorCompileOnPublish>
OK!现在发布后Views文件夹就不会编译了
2.前后端分离分有很多好处,但部署的时候需要独立部署端口,比如APi:81、Web:82、Admin:83等。虽然可以借助Nigx实现单个端口部署,但我们懒啊,想直接发布就搞定。此时可以这样做
1.新建一个文件夹,一般位于项目的根目录下,例如:webapp
2.新增静态文件,点此查看微软官方文档
app.UseStaticFiles(new StaticFileOptions { FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(System.IO.Path.GetFullPath("./webapp")), RequestPath = "/webapp" });
3.处理vue的路由
app.UseEndpoints(endpoints => { endpoints.MapFallback(async context => { if (context.Request.Path.StartsWithSegments("/webapp", StringComparison.Ordinal)) { var html = await System.IO.File.ReadAllTextAsync(System.IO.Path.GetFullPath("./webapp/index.html")); context.Response.ContentType = "text/html"; await context.Response.WriteAsync(html, System.Text.Encoding.UTF8); } else { context.Response.StatusCode = (int)System.Net.HttpStatusCode.NotFound; } }); });
4.修改vue.config.js中的publicPath
module.exports = { publicPath: "/webapp/", }
这句话意思是打包后的文件相对路径,可以去官网看详情
此时你的路径看起来类似这样,通过ip/webapp即可访问到vue的项目了。建议将这个配置的代码写成可配置的形式,以便后续修改


浙公网安备 33010602011771号