我正在创建一个Windows控制台应用程序来监控用户的出席情况.当用户登录到他的计算机(连接到网络)时,应在SQL Server数据库中更新Windows登录时间.所有客户端计算机都使用网络连接.问题是我将数据库连接字符串保存到...
我正在创建一个Windows控制台应用程序来监控用户的出席情况.
当用户登录到他的计算机(连接到网络)时,应在SQL Server数据库中更新Windows登录时间.
所有客户端计算机都使用网络连接.
问题是我将数据库连接字符串保存到服务器的哪个位置?如果我将连接字符串(加密)保存在客户端应用程序中运行的控制台应用程序中,如果几个月后服务器名称/用户名/密码发生更改,则会产生问题.
请为此问题提供最佳方法.
解决方法:
您确实可以将其存储在应用程序配置文件中(有关详细信息,请参阅@ NoOne的answer).但是,请注意,您可能不应该存储用户名和密码.
您有以下选择:
(a)encrypt connectionStrings配置部分.当你发现YMMV时,这有一些行政“问题”.
(b)不存储用户名和密码,但在运行期间从用户查询;可选地允许将它们指定为命令行参数 – 尽管它有自己的问题:使用任务管理器或Process Explorer等进程查看器工具可以看到参数(以及用户名/密码).
(c)查看是否可以将连接凭据从用户名/密码更改为集成安全性(因此您不需要在连接字符串中放置用户名/密码,因此不需要在配置文件中).
选项(c)是最好的.它完全取消了用户名(更重要的是)密码的必要性.但是,您的应用程序(和环境)必须为此做好准备(更多here).
如果转到选项(b),则可以在配置中指定连接字符串,而不使用用户和密码键.您可以让用户指定它们,然后使用SqlConnectionStringBuilder(或DbConnectionStringBuilder)类构建一个真正的连接字符串以进一步使用:
var builder = new SqlConnectionStringBuilder(
ConnectionManager.ConnectionStrings["test"].ConnectionString);
builder.UserID = /* Username specified by user */
builder.Password = /* Password specified by user */
string realConnectionString = builder.ConnectionString;
本文标题为:c# – 在客户端控制台应用程序中保存SQL Server连接字符串的位置?
基础教程推荐
- C#表达式树Expression动态创建表达式 2023-05-11
- .NETCore在析构函数(Finalize)在Linux下引起程序异常退出现象 2023-09-26
- C# .NET中Socket简单实用框架的使用教程 2022-11-11
- c# – Python .NET,多线程和windows事件循环 2023-09-20
- c# Task.Wait()与awaiat Task异常处理的区别说明 2023-06-14
- C#对桌面应用程序自定义鼠标光标 2023-06-21
- P/Invoke之C#调用动态链接库DLL示例详解 2023-07-18
- C#中WPF颜色对话框控件的实现 2023-05-26
- C#实现航班预订系统 2023-06-09
- Unity调取移动端的麦克风进行录音并播放 2023-01-22