2011-08-22 35 views
0

我们有一个使用网络数据库的C#.Net应用程序。我的意思是说,应用程序的许多实例将从不同的机器访问相同的数据库。因此,如果我必须存储用户ID以在重新登录时显示用户,我可以在哪里存储它?在使用网络数据库的同时存储用户标识的位置

我拥有的选项是:
- 将其存储在应用程序目录中的本地文件中。 (但问题是应用程序是使用Click Once安装的,当应用程序更新时,应用程序目录正在更改。可能是我在这里丢失了一些东西。)
- 存储在注册表中。
还有其他吗?

有人可以建议该怎么办?纠正我,如果我错了。

+0

你是什么意思?为什么不在Sql Mode中使用会话,如果这只是一个Web服务器场? – Tejs

+0

@Tejs如果用户已经登录一次,我想在登录表单中的用户标识文本字段中自动填充userId。我想在问db之前知道userId。 – Prakash

+0

@Prakash,注意不要存储任何明文密码。 –

回答

1

通常您希望存储任何需要在会话间持续存在的数据,并且在注册表或用户AppData文件夹中是用户特定的。通常对于小事情(即ID,基本设置等),注册表是最好的地方。只要确保将其保存在HKCU \ Software \ Your company name \您的程序名称下。虽然如果数据是敏感的,你应该小心地放置它,它应该被加密以保护它免受基本的窥探。如果数据不敏感,那么注册表是一个很好的放置位置。

这当然假定安装和配置不需要是xcopy便携式的(即,用户可以将安装文件夹复制到新的地方/计算机并且一切正常)。如果是这种情况,那么您将需要将其存储在安装目录下。

1

如果您需要将用户标识存储在本地,请将其保存在某种配置文件中,在“LastLogin”条目下。查看this question,特别是this answer了解更多信息。

+0

因此,您要求我在AppData目录(常量路径)中创建另一个用于存储'LastLogin'的文件,因为当应用程序更新时,应用程序文件夹正在被修改。 – Prakash

+0

是的,这几乎是我sugest – Michael

3

有对这种东西看Environment BUIL-INT位置 - 具体为:

  • ApplicationData(特定用户漫游)
  • LocalApplicationData(用户特定的非漫游)
  • CommonApplicationData(不是用户特定的)
+0

谢谢。在应用程序更新时应用程序文件夹被修改的情况如何(如问题中提到的那样)。我也想问问为什么应用程序文件夹正在被修改。 – Prakash

+0

这些位置在应用程序文件夹之外 - 因此应用程序文件夹内容的更新(如新的EXE/DLL等)不会改变您在这些位置放置的任何东西... – Yahia

+0

我们通过点击安装的应用程序一旦安装在位置“c:\ Users \ Prakash \ AppData \ Local \ Apps \ 2”。0 \ <随机值> \ <随机值> \ <应用程序安装文件夹>“这个应用程序安装的文件夹正在修改,这个路径是否在LocalApplicationPath下面吗? – Prakash

相关问题