【发布时间】:2016-04-17 12:38:36
【问题描述】:
我们有一个类库项目用于保存我们的基本数据定义、sql 函数和泛型函数。这个类库用在或winform项目和我们的asp.net项目中。
在其中一个类中,我们设置了通用函数和共享变量。
Public Class Generic
Public Shared CurrentDeviceUniqueIdentifier As String
Public Shared TimeDiffFromServer As Long
Public Shared myLogger As Logger
....
end Class
并且它们在类库中也可以在 winform/asp.net 项目中访问。
If Generic.myLogger IsNot Nothing Then Generic.myLogger.WriteLog(...)
这些共享变量不会导致任何问题 winform 项目,因为这些变量只有一个实例并且系统没有任何问题。
但是 asp.net 项目在会话中混淆了这些共享变量,因此它们是共享的。
我可以将类转换为模块,因为系统是用 VB 而不是 C# 设计的。但不确定这是否能解决问题。(应该) 以防将来我们可能想要转换为 C#,但这是行不通的。
但我很好奇是否有任何其他方法可以解决共享变量锁定到 asp.net 会话的问题。
【问题讨论】:
-
在 ASP.Net 应用程序中拥有一个供不同用户会话使用的共享方法或属性非常好。那你有什么问题?
-
静态(共享)值自己根本不会引起任何问题。但是您可能以一种有问题的方式使用它们,尤其是在多线程多用户环境中。您遇到的问题究竟是什么?
-
每个客户端的记录器会转到不同的文件夹,因此当有多个客户端时,日志会混淆。无法将其转换为会话编码,因为该类库也在类库内部使用,该类库在winforms内部使用也会导致问题。
-
我想我需要问一下是否有共享的替代方法,比如使用模块但不是首选方法。