zoukankan      html  css  js  c++  java
  • Angular程序发布到.net core的wwwroot目录下

    背景:

    公司开发了一个小型系统,采用.net core3.1+angular12进行开发,开发完成后就是两套程序,一个前端和一个后端。
    按照传统的方式就是将前端发布到Nginx,后端发布到IIS。但是咱们这只是一个很小的小项目,完全没必要发布两个站点,因此想要将Angular打包后的程序放到.net core的wwwroot目录下进行访问。
    思路没有问题,但是由于Angular自己有一套路由机制,如果使用http://ip:port/login这样的路由,就会出现404错误。

    解决方案:

    在.net core中增加一个中间件,当没有找到资源时就重定向到index.html上,从而保证兼容Angular自定义的路由,类似于Nginx的“try_files”。.net core核心代码如下:

    app.Use(async (context, next) =>
    {
        await next();
    
        if (context.Response.StatusCode == 404
            && !Path.HasExtension(context.Request.Path.Value)
            && !context.Request.Path.Value.StartsWith("/api"))
        {
            context.Request.Path = "/index.html";
            context.Response.StatusCode = 200;
            await next();
        }
    });
    
    app.UseStaticFiles();

     感谢公司热心同事王彧提供的整体思路和示例代码。

  • 相关阅读:
    简单工厂模式
    1.go的Hello
    Scrapy003-项目流程
    Django1.9开发博客(6)- 模板继承
    Django开发博客- 页面美化
    Django开发博客- 三部曲
    Django开发博客- 部署
    Django开发博客- 模型
    Django开发博客 入门篇
    内装式模块
  • 原文地址:https://www.cnblogs.com/duanjt/p/15629303.html
Copyright © 2011-2022 走看看