2015-09-07 46 views
-1
配置如何处理静态变量

我为出席一个C#桌面应用程序当应用程序(桌面C#)局域网

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

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

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

这里是示例..

上登录表单的用户名

被存储在静态变量作为

public static string username; 
username = txtUser.Text.Trim().ToString(); 

和在接下来的形式,其Home Page该用户名被用作

lblName.Text = Login.username; 

这里lblName是标签的名称和Login的名称登录表

当我配置LAN上这个应用程序则可以在同一时间超过一个用户将被记录并要访问的应用程序,然后每个用户应该看到他/她自己的用户名....

abc是用户1和xyz是用户2

如果两者都在同一时间登录然后我想abc看到

lblName.Text = "abc" 

和XYZ看

lblName.Text = "xyz" 

那么我该怎么做才能处理这份工作?

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

我使用的C#Windows应用程序。

在此先感谢。

+0

这个问题的答案是不使用静态变量。你需要某种存储机制,这可以是任何数量的东西(数据库,本地存储,noSQL等等)。 TBH如果你希望它*“在网络上运行”,那么一个网站将是明智的选择。我担心投票过于宽泛。你需要花些时间为自己研究一个答案,然后在你有一个可回答的问题时回来。 – Liam

+0

当你从局域网运行时,你真的测试过你的应用程序不工作吗?从服务器运行桌面EXE的每个用户都可以获得他们自己的EXE实例 - 您不应该发生“冲突”。 – Ulric

+0

我没有检查这在局域网上,但在谷歌我搜查了很多人说我不工作...所以我现在检查这个.and将很快在这里编辑我的问题...感谢您的时间 – Waqas

回答

0

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

所以,你的问题发生,因为你使用静态变量。

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

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

对服务器的每个请求都应该跟随该ID。所以你的服务器总是知道它是哪个用户。

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

+0

至于我知道会议只在基于Web的应用程序,它完全是桌面。实际上,我为自己建立了这个应用程序,但是当我的老板经历它时,他喜欢这个,现在他希望它可以在局域网上...... – Waqas

+0

@Waqas是的,但你可以使用相同的概念,为什么不呢?我假设你有Dewsktop应用程序和服务器端应用程序。对? –

+0

是的,但在互联网上我搜索了很多人说这是行不通的,有人说你应该为这些静态变量写应用程序域...这就是为什么我需要专家意见.. – Waqas