由于业务需要,IIS要绑定几千个域名,如果通过界面手动绑定域名肯定是行不通的,于是写了个小工具来解决IIS批量绑定域名的问题。其实思路很简单,就是直接操作IIS的配置文件。
大概的思路是这样的,我们先了解IIS域名绑定的语法规则,再通过编写C#程序批量操作获取正确的配置字符串,最后只要将结果复制到服务器上的配置文件即可,这样就实现了批量域名绑定。
先说下环境,服务器系统是windows server 2012 R2,IIS版本为8.5,使用C#编写控制台应用程序,最终将结果输出到txt文本中。IIS域名绑定的配置语法如下:
<binding protocol=\"http\" bindingInformation=\"{IP地址}:{端口}:{域名}\" />
这里直接上代码:
static void Main(string[] args)
{
//演示中的文本都放在当前项目路径"bin\Debug\data"目录下
string directory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "data/");
string pathRead = Path.Combine(directory, "需要批量绑定的域名文本.txt");
string pathWrite = Path.Combine(directory, "最终获取的IIS域名配置文本.txt");
//IIS配置文件绑定域名的格式:<binding protocol=\"http\" bindingInformation=\"{IP地址}:{端口}:{域名}\" />
//注意:IP地址和端口号要根据自己服务器配置来更改
string bindFormat = "<binding protocol=\"http\" bindingInformation=\"192.168.1.1:80:{0}\" />";
//读取并生成
Console.WriteLine("开始生成批量域名绑定配置文本--------------------------------");
List<string> resultList = new List<string>();
using (StreamReader sr = new StreamReader(pathRead, Encoding.UTF8))
{
string temp = string.Empty;
while (sr.Peek() >= 0)
{
temp = sr.ReadLine();
if (string.IsNullOrWhiteSpace(temp))
{
continue;
}
temp = string.Format(bindFormat, temp);
resultList.Add(temp);
Console.WriteLine(temp);
}
}
//将结果写入到txt文本中
using (FileStream fs = new FileStream(pathWrite, FileMode.Create, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(fs))
{
foreach (string domain in resultList.Distinct().ToList())
{
sw.WriteLine(domain);
}
}
Console.WriteLine("操作结束,一共处理了{0}条域名,按任意键结束------------------", resultList.Count());
Console.ReadKey();
}
结果演示:
范例只取8条域名做测试,实际遇到的都是成百上千条域名要批量绑定
最终结果输出到txt文本中,我们可以很容易将内容复制出来:
作者:十有三
出处:https://shiyousan.com/post/636022975388168065
版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。