我有一些使用静态变量的 C# 库类。我将这些库类用于桌面和 Web 应用程序。问题是,正如我刚刚发现的那样,静态变量在网络服务器上的表现不佳;这些值在使用该网站的所有 session 中共享!
我怎样才能保留静态变量的特性以便在我的桌面应用程序中使用,同时确保我的网络服务器上的每个 session 都有自己独立的这些变量值——但在 session 本身内,它的行为仍然像静电?
请您参考如下方法:
静态变量值在应用程序域中的所有线程之间共享。在 ASP.NET 应用程序中,推荐的存储仅与当前用户相关的数据的方法是 Session .
如果您可以修改此共享库的代码,我建议您从这些静态变量中提取一个接口(interface),以提供一种存储值的机制。这将允许每个应用程序提供自己的实现。对于 Windows 应用程序,您可以使用内部使用静态变量的实现。对于 ASP.NET 应用程序,您可以使用 session 。但在所有情况下,您只公开一个接口(interface)。这也会产生积极的副作用,使您的代码更容易进行单元测试。
