示例#1
0
 public static IEndpointRouteBuilder UseBlocklyAutomation(this IEndpointRouteBuilder endpoints)
 {
     //endpoints.MapFallbackToFile("BlocklyAutomation/{**:nonfile}", "BlocklyAutomation/index.html");
     endpoints.Map("BlocklyAutomation/{**:nonfile}", async ctx =>
     {
         var dir              = FileProvider.GetDirectoryContents("BlocklyAutomation").ToArray();
         var file             = dir.Where(it => it?.Name?.ToLower() == "index.html").FirstOrDefault();
         var response         = ctx.Response;
         response.ContentType = contentFromExtension(file.Name);
         //in net 6 use sendfileasync
         using (var fileContent = file.CreateReadStream())
         {
             await StreamCopyOperation.CopyToAsync(fileContent, response.Body, file.Length, CancellationToken.None);
         }
     });
     return(endpoints);
 }
示例#2
0
        private void GetFileInfosRecursive(string root, List <RelativeFileInfo> razorFiles)
        {
            var fileInfos = FileProvider.GetDirectoryContents(root);

            foreach (var fileInfo in fileInfos)
            {
                if (fileInfo.IsDirectory)
                {
                    var subPath = CombinePath(root, fileInfo.Name);
                    GetFileInfosRecursive(subPath, razorFiles);
                }
                else if (Path.GetExtension(fileInfo.Name)
                         .Equals(FileExtension, StringComparison.OrdinalIgnoreCase))
                {
                    var relativePath = CombinePath(root, fileInfo.Name);
                    var info         = new RelativeFileInfo(fileInfo, relativePath);
                    razorFiles.Add(info);
                }
            }
        }