在LAN上配置应用程序(桌面c#)时如何处理静态变量

时间:2015-09-07 13:36:54

标签: c# appdomain static-variables

我构建了一个用于出勤的c#桌面应用程序

当我在一台机器上运行时,应用程序运行正常,一切都很好..

但现在问题是......我的老板希望这个应用程序应该在局域网上工作,每个客户端都可以从服务器访问应用程序

但我使用的静态变量在运行时存储了一些值,然后我在下一个表单中使用了这些值。

这里是示例..

登录表单上的

用户名存储在静态变量中

## first_user has id = 103
## second_user has id = 209
## I don't want to have:
Frienship<id = 1072, user_id = 103, friend_id = 209>
Frienship<id = 3022, user_id = 209, friend_id = 103>
## i.e, I don't want to store this relationship two times.

以下一种形式 public static string username; username = txtUser.Text.Trim().ToString(); 将此用户名用作

Home Page

此处lblName.Text = Login.username; 是标签名称和登录表单的lblName名称

当我在局域网上配置此应用程序时,可能同时有多个用户将登录并想要访问应用程序,然后每个用户都应该看到他/她自己的用户名....

e-g Login是用户1,abc是用户2

如果两者同时登录,那么我希望xyz看到

abc

和xyz看

 lblName.Text = "abc"

那我该怎么做才能完成这份工作呢?

我不需要在用户之间混淆任何信息......

我使用了c#windows app。

提前感谢。

1 个答案:

答案 0 :(得分:0)

我假设您在服务器端使用静态变量,对吧?

因此,您的问题发生是因为您使用的是静态变量。

在应用程序运行的所有阶段,静态变量在您的类中是一致的。并且这些字段在可以使用该类的所有进程之间共享。静态变量就是为此而设计的。

作为一种可能的快速解决方案,您可以生成类似于唯一会话ID的内容。在客户端登录系统期间 - 您只需在客户端生成该ID,并将其与登录信息一起发送到服务器。如果验证成功,服务器将在缓存中存储id一个密钥。并且缓存的值可以是具有用户姓名和其他需求的对象。

对您的服务器的每个请求都应该跟随该ID。因此,您的服务器将始终知道它是哪个用户。

如果您需要更详细的答案,请提供有关应用网络结构及其模块的更多信息。