我构建了一个用于出勤的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。
提前感谢。
答案 0 :(得分:0)
我假设您在服务器端使用静态变量,对吧?
因此,您的问题发生是因为您使用的是静态变量。
在应用程序运行的所有阶段,静态变量在您的类中是一致的。并且这些字段在可以使用该类的所有进程之间共享。静态变量就是为此而设计的。
作为一种可能的快速解决方案,您可以生成类似于唯一会话ID的内容。在客户端登录系统期间 - 您只需在客户端生成该ID,并将其与登录信息一起发送到服务器。如果验证成功,服务器将在缓存中存储id一个密钥。并且缓存的值可以是具有用户姓名和其他需求的对象。
对您的服务器的每个请求都应该跟随该ID。因此,您的服务器将始终知道它是哪个用户。
如果您需要更详细的答案,请提供有关应用网络结构及其模块的更多信息。