我有一些使用静态变量的 C# 库类。我将这些库类用于桌面和 Web 应用程序。问题是,正如我刚刚发现的,静态变量在 Web 服务器上的表现不太好;这些值在使用该网站的所有会话中共享!

如何保留静态变量的功能以在桌面应用程序中使用,同时确保 Web 服务器上的每个会话都有自己独立的这些变量值 - 但在会话本身内,它的行为仍然像静态变量?

有帮助吗?

解决方案

静态变量值在应用程序域中的所有线程之间共享。在 ASP.NET 应用程序中,存储仅与当前用户相关的数据的推荐方法是 会议.

如果您可以修改此共享库的代码,我建议您从这些静态变量中提取一个接口,该接口将提供一种存储值的机制。这将允许每个应用程序提供自己的实现。对于 Windows 应用程序,您可以使用内部使用静态变量的实现。对于 ASP.NET 应用程序,您可以使用 Session。但在所有情况下,您只公开一个接口。这也会产生积极的副作用,使您的代码更容易进行单元测试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top