我有一个 .NET Core MVC 应用程序 (C#),它使用 C++ 库 (SWIG)。在 C# 中,我需要创建其中一个类的实例,预设其回调并在服务器运行时使其保持事件状态。使用此回调,我从 C++ 获取数据。我试图将对象存储在 session 中,但我只能在其中存储值:
HttpContext.Session.Set(key, value);
也尝试在 Startup
上定义它,但该对象在初始化后被释放。在这种情况下最好的解决方案是什么?
注意:在回调函数中,我使用 SignalR 发布数据。
最佳答案
由于您使用的是 ASP.NET Core,因此请使用内置的服务管理器。
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<SwiggStuff>();
}
要稍后获得该服务,请使用 RequestServices
的 HttpContext
.
HttpContext.RequestServices.GetService<SwiggStuff>();
更好的是,制作 SwiggStuff
实现 ISwiggStuff
并使用 AddSingleton<ISwiggStuff, SwiggStuff>()
注册它然后使用 GetService<ISwiggStuff>()
获取它.这允许注入(inject) FakeSwiggStuff
当您进行单元测试时。
关于c# - 如何在 ASP.NET Core 中保持对象存活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49509333/