为多用户Windows应用程序设置服务器IP

时间:2018-09-28 12:12:36

标签: c# winforms entity-framework multi-user

我已经使用WinForms数据提供程序编写了一个供多用户使用的DataContext应用程序。我们知道,在为客户制作安装文件之前,应像下面那样设置App.config文件(包括连接字符串):

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="WindowsFormsApplication1.Properties.Settings.MyDBonnectionString"
            connectionString="Data Source= 192.168.17.1;Initial Catalog=MyDB;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>

由于服务器IP可能会更改,所以我的想法是让组织的IT部门给我一个URL,该URL包含一个文件,其中存储了服务器IP(MyDB附加在该文件中)。因此,我编写如下代码以读取该文件:

class GetServerIP
{
    private string getServerIP ()
    {
        string ConnString = "";
        XmlReader xmlReader = XmlReader.Create("http://www.OrgITDept/Files/MyAppServerIP.xml");
        while (xmlReader.Read())
        {
            if ((xmlReader.NodeType == XmlNodeType.Element) && (xmlReader.Name == " connectionString "))
            {
                if (xmlReader.HasAttributes)
                {
                    ConnString = "Data Source=" + xmlReader.GetAttribute("IPAdress") + "Initial Catalog = MyDB; Integrated Security = True";
                }
            }
        }
        return ConnString;
    }
}

然后,我想我可以调用上述方法以用其输出替换App.config文件中的“ connectionString”行,并在运行时(以LogIn形式)设置连接字符串。像这样:

public void WritingXml()
{
    string dynamicConnStr = getServerIP();
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(System.Windows.Forms.Application.StartupPath + @"App.config");
    XmlNodeList userNodes = xmlDoc.SelectNodes("//configuration/connectionStrings/connectionString");

    foreach (XmlNode u in userNodes)
    {
        u.Attributes["connectionString"].Value = dynamicConnStr;
    }

    xmlDoc.Save(System.Windows.Forms.Application.StartupPath + @"App.config");
}

我有一些问题:

  1. 我的想法可行吗?

  2. 在创建应用程序安装文件之后是否可以编辑App.config文件? (因为在解决方案文件夹/ bin中没有App.config文件。实际上它位于解决方案根文件夹中,据我所知,我们是从bin文件夹而不是整个解决方案文件夹中创建安装文件(通过ex InstallAwere软件)) / p>

  3. 是否有任何安全问题要解决?

  4. 如果我们在包含服务器IP的文件中输入密码(以提高安全性),是否可以通过上述代码读取其内容?

任何建议或替代性想法或安全注意事项都会受到赞赏。

0 个答案:

没有答案