首页 > 解决方案 > C#我将如何编写一个实用程序来更新不同文件夹中多个配置文件的 IP 地址

问题描述

我有一个软件,在安装时会询问我服务器的 IP 地址,并将该地址存储到不同文件夹中的多个配置文件中。

我要做的是创建一个实用程序,如果出于某种原因我的 IP 地址要更改,则存储的 IP 地址将更新为当前 IP 地址。

我的代码只是告诉我我的本地 IP 地址,但它没有更新配置文件中的 IP 地址。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;

namespace ConfigTool
{
    class Class1
    {
        public static IPAddress GetIPAddress(string hostName)
        {
            Ping ping = new Ping();
            var replay = ping.Send(hostName);

            if (replay.Status == IPStatus.Success)
            {
                return replay.Address;
            }
            return null;
        }

        public static void Main()
        {
            Console.WriteLine("Local IP Address: " + 
            GetIPAddress(Dns.GetHostName()));
            Console.WriteLine("Google IP:" + GetIPAddress("google.com"));
            Console.ReadLine();
        }
    }
}

XML

<endpoint name="???Local" address="net.tcp://122.13.0.250:7732/EventSubscriberServices/Secure" binding="netTcpBinding" contract="************" bindingConfiguration="TcpCustomSecurity" behaviorConfiguration="CustomValidator">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>

标签: c#.netxmlconfiguration

解决方案


使用 xml linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XElement endpoint = doc.Descendants("endpoint").FirstOrDefault();

            string newIp = "122.13.0.251";
            string address = (string)endpoint.Attribute("address");

            string pattern = "//[^:]+";
            address = Regex.Replace(address, pattern, "//" + newIp);

            endpoint.Attribute("address").SetValue(address);
            doc.Save(FILENAME);
        }
    }
}

推荐阅读