我有一个Asp Net Core
,虽然我有一些代表简单API
调用的控制器,但我也想用FileProvider
's 来服务页面。
如何将页面请求重定向到控制器(检查凭据)并提供服务?我还必须分支管道,以便我可以提供简单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();
}
页面控制器
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
如果方法返回文件应该有什么返回类型?