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的项目了。建议将这个配置的代码写成可配置的形式,以便后续修改

 

posted @ 2021-04-11 22:43  luckcc  阅读(113)  评论(0)    收藏  举报