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、然后运行即可