private async Task <List <BlogPost> > GetPostsFromFileAsync() { var result = new List <BlogPost>(); var postDirPath = Path.Combine(_appConfig.AssetRepoLocalDir, BlogConstant.PostGitHubPath); if (!Directory.Exists(postDirPath)) { return(result); } foreach (var postItem in Directory.EnumerateFiles( postDirPath, $"*{BlogConstant.PostMarkdownExtension}")) { try { var post = await _postParser.FromTextAsync(await File.ReadAllTextAsync(postItem), Path.GetFileNameWithoutExtension(postItem)); result.Add(post); } catch (Exception ex) { _logger.LogCritical(ex, "Parse post failed. Post full path = {PostPath}.", postItem); } } return(result); }