c# - 有没有办法从 ASP.NET Core IFileProvider 类中检索 HttpContext?
问题描述
我正在尝试从 中获取 的实例HttpContext
,IFileProvider
因此我可以访问在子路径中更新路由映射之前请求的原始路径。
我正在尝试从数据库动态读取视图的示例,但是由于路径始终映射到主控制器,并且缓存的视图我无法访问原始请求路径以从数据库加载正确的视图。我可以让它工作的唯一方法是对映射进行硬核,并分别使用不同的控制器或操作来处理每个文件,但是它不会使用数据库中的动态视图。
public class DBViewProvider : IFileProvider {
public IDirectoryContents GetDirectoryContents(string subpath) {
string path = ConvertPath(subpath);
return new DBViewDirectoryContents(path);
}
解决方案
依赖注入将帮助您HttpContextAccessor
在构造函数中注入
public class DBViewProvider : IFileProvider {
private readonly IHttpContextAccessor httpContextAccessor;
public DBViewProvider(IHttpContextAccessor httpContextAccessor){
this.httpContextAccessor = httpContextAccessor;
}
public IDirectoryContents GetDirectoryContents(string subpath) {
HttpContext httpContext = httpContextAccessor.HttpContext;
string path = ConvertPath(subpath);
return new DBViewDirectoryContents(path);
}
/*******************hidden for brievety************/
}
您将需要在这样的Startup.ConfigureServices
方法中添加这一行
services.AddHttpContextAccessor();
推荐阅读
- raspberry-pi - 如何通过 I2C 在 Raspberry pi 和 PIC 设备 (PIC16F18325) 之间进行通信
- c# - .NET Core 使用 Azure B2C 身份验证,登录后查找 @User.Identity.UserID 等用户属性
- java - Java 函数变量冲突
- python - ValueError:无法将输入数组从形状(15,15)广播到形状(15)
- ios - 如何在 WebRTC/IOS 上使用麦克风和背景音频(其他应用程序)进行流式传输?
- reactjs - 当主视图导航到登录视图时,如何触发登录的useEffect?
- wordpress - Wordpress 元框不保存和更新
- python - 无法在 Python 中打印 Trie 中的节点
- java - 仅更改所选列时不调用 valueChanged 方法
- elasticsearch - 将 Elasticsearch 索引中的文档替换为字段条件