我使用.Net Core 2.0创建了一个网站。现在我想存储一些不特定于用户的值,并希望这些值在所有已登录的用户之间共享。为此,我可以使用Application Variable。但是,在.Net Core 2.0中没有内置的方法来实现这一点。
下面是我所尝试的内容:
我创建了一个类,如下所示。
在
下面是我所尝试的内容:
我创建了一个类,如下所示。
public class ApplicationLevelData
{
public Guid TestProperty { get; set; }
public ApplicationLevelData()
{
TestProperty = Guid.NewGuid(); // this data will comes from database (only once)
}
}
在
Startup.cs
文件的ConfigureServices
方法下面,我写了以下代码:
services.AddSingleton<ApplicationLevelData>();
然后在每个Controller
中,我需要注入该服务,如下所示:
private ApplicationLevelData _appData;
public HomeController(ApplicationLevelData appData)
{
_appData = appData;
}
之后我们可以在整个Controller
中使用它。
但是,我不想用这个Inject
。我们能否使用HttpContext
使应用程序数据可用?
有人能建议我如何在.Net Core 2.0
中创建Application变量
吗?
任何帮助将不胜感激。
谢谢。
HttpContext
。 - Jon SkeetHttpContext
中获取这些值。因为HttpContext
在所有控制器中都是默认可用的。 - prog1011HttpContext
毫无关系,为什么要将其包含在其中?如果您基本上想要一个单例,并且不想要依赖注入的测试和隔离优势,请使用单例模式。我个人不会这样做 - 我会使用依赖注入来清楚地指出您需要它的位置,并启用轻松的测试 - 但这肯定是可行的,并且在我看来比使用HttpContext
处理与实际请求无关的内容更有意义。 - Jon Skeet