Изменить содержимое запрашиваемого файла в ASP.NET core 2.0 - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь изменить тело указанных запрошенных файлов, используя приведенный ниже код. Файл index.html правильно отправляется клиенту, но другие файлы, включенные в раздел заголовка, на стороне клиента пусты (файлы отображаются на вкладке источников в Chrome). Kestrel не сообщают ни о каких ошибках. Не могли бы вы объяснить, почему?

public static Func<HttpContext, Func<Task>, Task> Rewrite()
{
    return async (context, next) =>
    {
        if (context.Request.Path.Value == "/")
        {
            var originalStream = context.Response.Body;

            using (Stream bufferStream = new FileStream("./wwwroot/index.html", FileMode.Open, FileAccess.Read))
            {
                context.Response.Body = bufferStream;
                bufferStream.Seek(0, SeekOrigin.Begin);

                using (var reader = new StreamReader(bufferStream))
                {
                    var response = await reader.ReadToEndAsync();
                    response = response.Replace("[ddd]", "<script type=\"text/javascript\" src=\"lib/jquery/dist/jquery.js\"></script>");

                    using (var writer = new StreamWriter(originalStream))
                    {
                        await writer.WriteAsync(response);
                    }
                }
            }
        }
        else
        {
            await next();
        }
    };
}

Конечно, эта функция зарегистрирована в файле конфигурации

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.Use(ResponseStreamRewriter.Rewrite());
}
...