Я хотел бы сопоставить пользовательскую конечную точку с html-файлом, например localhost:3000/page, который приведет вас к somePage.html. Я попробовал использовать app.UseFileServer, как описано в документации asp.net, для таких статических файлов
Код: Выделить всё
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\somePage.html")),
RequestPath = "/page",
});
но я понял, что он предназначен для сопоставления каталога, а не отдельных файлов, и ничто другое на этой странице, похоже, не делает то, что я хочу, если только я это не пропустил.
я тоже думал об использовании такого перенаправления
Код: Выделить всё
app.MapGet("/page", () => Results.Redirect("/somePage.html"));
но я не хочу, чтобы URL-адрес был localhost:3000/somePage.html, я хочу, чтобы это был localhost:3000/page. поэтому я не могу это использовать.
Я решил, что могу просто прочитать файл в переменную и вернуть его вот так
Код: Выделить всё
string currDir = Directory.GetCurrentDirectory();
byte[] somePageHtml = File.ReadAllBytes(Path.Combine(currDir, @"wwwroot\somePage.html"));
app.MapGet("/page", () =>
{
return Results.File(somePageHtml, "text/html");
});
это работает, но мне интересно, есть ли способ сделать это в asp.net? также может ли мой метод вызвать проблемы в будущем? я не знаю, сколько и какого размера будут мои html-файлы, разве это плохая идея хранить их в памяти вот так?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... -html-file