域名验证与服务器查询

在管理个人内网站点时,希望能够验证域名是否正确地委托给了指定的服务器。这个站点是用ASP.NET4.5RC框架编写的。任务是验证域名是否正确地委托给了具有有效A记录的服务器,这些服务器可能是服务器,也可能是外部托管的服务器。

使用system.net程序集来查询域名记录相对简单,但是使用它来查询外部名称服务器的委托就有些麻烦了。因此,决定简单地使用Windows内置的nslookup工具,这个工具自Windows 2000以来就可用(也许更早)。

在IIS线程中调用可执行文件总是有风险的,但由于只有使用它,所以一个快速的hack是足够的。

因此,编写了一个函数(或者扩展了一个相当流行的代码片段),它简单地调用nslookup并返回结果的完整文本。然后可以解析这个文本以检索名称服务器和其他详细信息,这取决于需求。

VB.NET 实现

Function RunCmd( ParamArray commands As String() ) As String Dim returnvalue As String = String.Empty Dim info As New ProcessStartInfo( "cmd" ) info.UseShellExecute = False info.RedirectStandardInput = True info.RedirectStandardOutput = True info.CreateNoWindow = True Using process__1 As Process = Process.Start(info) Dim sw As StreamWriter = process__1.StandardInput Dim sr As StreamReader = process__1.StandardOutput For Each command As String In commands sw.WriteLine(command) Next sw.Close() returnvalue = sr.ReadToEnd() End Using Return returnvalue End Function

C# 实现

public string RunCmd( params string[] commands) { string returnvalue = string .Empty; ProcessStartInfo info = new ProcessStartInfo( "cmd" ); info.UseShellExecute = false; info.RedirectStandardInput = true; info.RedirectStandardOutput = true; info.CreateNoWindow = true; using (Process process__1 = Process.Start(info)) { StreamWriter sw = process__1.StandardInput; StreamReader sr = process__1.StandardOutput; foreach ( string command in commands) { sw.WriteLine(command); } sw.Close(); returnvalue = sr.ReadToEnd(); } return returnvalue; }

调用这个函数非常简单:

VB - Dim results As String = RunCmd(“google.com.au 8.8.8.8”) C# - string results = RunCmd(“google.com.au 8.8.8.8”);

第一个组件是域名,第二个是想要查询的名称服务器。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485