c# - 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>
解决方案
使用 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);
}
}
}
推荐阅读
- python-requests - 检测 url 是否代表流链接
- qt - QQmlApplicationEngine 没有完全卸载 qml 组件
- python - 是否有从末尾开始的 Python re.sub?
- java - 在 JFrame 上的 JPanel 上添加画布
- angular - 将数据从表单发送到同级别的另一个组件 -angular
- javascript - document.getCSSCanvasContext 是原生 javascript 函数吗?
- azure - Ansible:构建一个新的 hosts.yml 文件并运行一个新的剧本
- bash - 如何根据字段值连接 JQ 中的虚拟值,然后 CSV 聚合这些连接?
- c# - 为什么不能捕捉到这个异常?
- angular - 如何将匿名函数传递给 Angular 模板