Как обслуживать страницы с помощью файлового провайдера с контроллера?
У меня есть Asp Net Core
и хотя у меня есть контроллеры, которые представляют собой простые API
звонки, которые я тоже хочу использовать FileProvider
для обслуживания страниц.
Как я могу перенаправить запрос страницы на контроллер (проверить учетные данные) и обслужить его? Я также должен разветвлять конвейер, чтобы я мог служить простымjson
с.
Пока мой файловый провайдер обслуживается всеми, кто его запрашивает. Как мне использовать его с контроллера (добавляя дополнительную логику защиты к запросу)?
Запускать
public void Configure(IApplicationBuilder app) {
app.MapWhen(x => x.Request.Path.Value.Contains("pages"), x => {
PhysicalFileProvider provider = new PhysicalFileProvider([some path]);
DefaultFilesOptions options = new DefaultFilesOptions() {
DefaultFileNames = new List<string> { "index.html" },
FileProvider = provider
};
x.UseDefaultFiles(options);
x.UseStaticFiles(new StaticFileOptions {
RequestPath = "index.html",
FileProvider = provider
});
x.UseMvc();
});
app.UseMvc();
}
PageController
public class PageController:Controller {
[HttpGet]
[Route("/pages/index.html")]
public async Task<File> ServeIndexAsync() {
//logic to check if user has access
}
[HttpGet]
[Route("/pages/data.html")]
public async Task<File> ServeDataAsync()
{
}
}
Контроллер API
Это обычный контроллер, логика которого будет использоваться всякий раз, когда кто-то запрашивает не-страничный запрос:
public NormalController:Controller
{
[HttpGet]
[Route("/get-data")]
public async Task<string> GetDataAsync()
{
return "some data";
}
}
PS Я не знаю, какой тип возвратаPageController
методы должны быть, если они возвращают файлы?