HostTracker:网络连接问题的解决方案

是否经常遇到网络连接问题?当联系技术支持时,是否感到困惑?HostTracker为提供了日志文件,可以将这些文件发送给网络托管服务提供商,以证明连接问题。

编写HostTracker是为了解决与网络托管服务提供商之间的问题。

解决方案

HostTracker是一个Visual Studio 2008项目,包含了通过Windows服务记录连接所需的一切。配置非常简单,如下所示:

在这里,Url1是要测试的网站,Url2用于比较目的,选择主机提供商的主网站是一个不错的选择。如果互联网连接失败,那么两个Url都会失败。然而,如果Url2通过而Url1失败,那很可能表明网络托管服务提供商的服务器存在问题。

测试和调试Windows服务可能会很棘手

为了简化,在配置文件中包含了一个TestMode变量,以便将软件作为易于调试的控制台应用程序运行,或者作为Windows服务运行,如下所示:

static void Main() { BasicUtil bu = new BasicUtil(); bool bTest = bu.StringToBool(ConfigurationManager.AppSettings["TestMode"]); if (bTest) { Console.WriteLine("Start of Main (HostTracker)"); TestHostTracker hw = new TestHostTracker(); hw.TestOnStart(); Console.WriteLine("To run as a Service change TestMode in HostTracker.exe.config to N"); Console.WriteLine("======== Press Key to end program"); Console.ReadKey(); hw.TestOnStop(); } else { ServiceBase[] ServicesToRun = new ServiceBase[] { new HostTracker() }; ServiceBase.Run(ServicesToRun); } }

ProjectInstaller类方法InitializeComponent()代码段在服务安装期间用于设置初始服务参数,这些参数可以通过服务控制面板图标进行更改:

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem; this.serviceProcessInstaller1.Password = null; this.serviceProcessInstaller1.Username = null; this.HostTrackerInstaller.ServiceName = "HostTrackerServic"; this.HostTrackerInstaller.Description = "Visits 2 configured web sites every interval"; this.HostTrackerInstaller.StartType = System.ServiceProcess.ServiceStartMode.Automatic;

从以前的项目中获取了ProjectInstaller.cs和ProjectInstaller.Designer.cs。在某些情况下,这段代码似乎是自动生成的。然而,只是复制了代码并根据需要进行了修改。

WebScrape类继承自Webclient,GetWebPage方法如下所示:

该方法向传递的URL发起请求,检索网页HTML,并返回执行此操作所需的时间跨度,并返回一个布尔值以指示成功或失败。

public bool GetWebPage(String pUrl, String pPost, out String pPageHtml, out TimeSpan ts) { pPageHtml = String.Empty; bool rv = false; HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(pUrl); if (pPost == String.Empty) { objRequest.Method = "GET"; } else { objRequest.Method = "POST"; } objRequest.ContentLength = pPost.Length; objRequest.ContentType = "application/x-www-form-urlencoded"; String s = @"Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.0;+Trident/4.0"; s += @";+SLCC1;+.NET+CLR+2.0.50727;+.NET+CLR+1.1.4322;"; s += @"+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729)"; objRequest.UserAgent = s; if (pPost != String.Empty) { try { StreamWriter myWriter = new StreamWriter(objRequest.GetRequestStream()); myWriter.Write(pPost); } catch (Exception) { // WriteLine(e.Message); } finally { myWriter.Close(); } } DateTime dtStart = DateTime.Now; HttpWebResponse objResponse = null; try { objResponse = (HttpWebResponse)objRequest.GetResponse(); } catch (Exception) { ts = new TimeSpan(); return rv; } DateTime dtFin = DateTime.Now; Stream aStream = objResponse.GetResponseStream(); if (aStream != null) { using (StreamReader sr = new StreamReader(aStream)) { pPageHtml = sr.ReadToEnd(); dtFin = DateTime.Now; sr.Close(); rv = true; } } ts = dtFin - dtStart; return rv; }

安装服务

要安装,请使用:

InstallUtil.exe HostTracker.exe

要卸载,请使用:

InstallUtil.exe /u HostTracker.exe

或者使用InstallService.bat:

rem uninstall HostTracker C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe /u "C:\path\HostTracker.exe" rem install HostTracker C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe "C:\path\HostTracker.exe" pause

需要编辑InstallService.bat中的路径。

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