Установить IP-адрес сервера для многопользовательского приложения Windows - PullRequest
0 голосов
/ 28 сентября 2018

Я написал 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-адрес сервера может измениться, моя идея состоит в том, чтобы сделать ИТ-отдел организацииотдел дайте мне 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;
    }
}

Тогда я думаю, что я могу вызвать вышеуказанный метод, чтобы заменить строку «connectionString» в файле App.config на ее вывод и установить строку подключенияво время выполнения (например, в форме входа в систему).Примерно так:

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. Действительно, он находится в корневой папке решения, и, насколько мне известно, мы создаем установочный файл (с помощью программного обеспечения InstallAwere) из папки bin, а не всей папки решения)

  3. Есть ли какие-либо проблемы безопасности, с которыми нужно справиться?

  4. Если мы добавим пароль к файлу, содержащему IP-адрес сервера (для более высокого уровня безопасности) можно ли прочитать его содержимое с помощью кода, как указано выше?

Будут оценены любые предложения, альтернативные идеи или соображения безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...