agular项目打包后在dotnet core Api程序上运行

1、新建一个net core api项目

2、将打包后的文件放在 wwwroot 目录下,没有的话新建一个(我放在了 wwwroot\ClientApp\dist 目录)

3、添加中间件,代码如下

app.Use(async (context, next) =>
            {
                // 请求路径
                var url = context.Request.Path.Value;
                // 默认路径重定向到 Angular 初始页
                if (url == null || url == "/" || url == "/swagger/index.html")
                {
                    context.Response.Redirect($"/index.html");
                    return;
                }
                if (!url.Contains(".")) // 此处暂时通过“.”判断是否加载文件
                {
                    await next();
                    return;
                }

                var token = context.RequestAborted;
                var response = context.Response;

                var fileName = FileHandler.GetFileNameFromUrl(url); // 获取文件名
                var suffix = FileHandler.GetSuffixFromFile(fileName); // 获取后缀名 不带“.”
                var path = url.Replace("/", @"\"); // http中的“/”转为“\”,通过url获得文件的相对路径

                var root = Directory.GetCurrentDirectory() + @"\wwwroot\ClientApp\dist"; // Angular 文件所在目录的根路径
                IFileProvider fileProvider = new PhysicalFileProvider(root);
                IFileInfo file = fileProvider.GetFileInfo(path);
                if (!file.Exists) { 
                    response.StatusCode = StatusCodes.Status404NotFound; 
                    return; 
                }

                var provider = new FileExtensionContentTypeProvider();
                var memis = provider.Mappings.ToArray();
                var memi = provider.Mappings["." + suffix]; // 获取文件类型
                response.ContentType = memi;
                response.ContentLength = file.Length; // 文件长度

                await response.SendFileAsync(file, token);
            });

4、然后运行即可

agular项目打包后在dotnet core Api程序上运行

上一篇:用注册表互换windows系统的键盘按键(支持多个)


下一篇:X Wing