Определение статических файлов на основе маршрута или домена в ASP.NET Core для SPA - PullRequest
0 голосов
/ 19 сентября 2019

Можно ли возвращать разные статические файлы на основе маршрута в ASP.NET Core 2/3 +?

Например:

app.domain.com будет отображать некоторые index.html дляобщедоступный SPA (ReactJS / VueJS)

admin.domain.com будет отображать некоторые другие index.html для частного аутентифицированного SPA (Angular)

www.domain.com будет отображать третий index.html дляобщедоступная целевая страница

Не могу найти, как в документации https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-3.0

1 Ответ

0 голосов
/ 20 сентября 2019

Для возврата другого содержимого в зависимости от домена вы можете попытаться изменить содержимое в UseStaticFiles, например

app.UseStaticFiles(new StaticFileOptions
{
    OnPrepareResponse = async ctx =>
    {
        var request = ctx.Context.Request;
        string index = "";
        if (request.Host.Host.Equals("app.domain.com") && request.Path.Value.Contains("index.html"))
        {
            index = Path.Combine(Directory.GetCurrentDirectory(),
                "wwwroot", "PublicIndex.html");
        }
        else if (request.Host.Host.Equals("admin.domain.com") && request.Path.Value.Contains("index.html"))
        {
            index = Path.Combine(Directory.GetCurrentDirectory(),
                "wwwroot", "PrivateIndex.html");
        }
        if (!String.IsNullOrEmpty(index))
        {
            var fileBytes = File.ReadAllBytes(index);
            ctx.Context.Response.ContentLength = fileBytes.Length;
            using (var stream = ctx.Context.Response.Body)
            {
                await stream.WriteAsync(fileBytes, 0, fileBytes.Length);
                await stream.FlushAsync();
            }
        }
    }
});

Убедитесь, что в папке wwwroot есть файл index.html по умолчанию.

...