是否经常遇到网络连接问题?当联系技术支持时,是否感到困惑?HostTracker为提供了日志文件,可以将这些文件发送给网络托管服务提供商,以证明连接问题。
编写HostTracker是为了解决与网络托管服务提供商之间的问题。
HostTracker是一个Visual Studio 2008项目,包含了通过Windows服务记录连接所需的一切。配置非常简单,如下所示:
在这里,Url1是要测试的网站,Url2用于比较目的,选择主机提供商的主网站是一个不错的选择。如果互联网连接失败,那么两个Url都会失败。然而,如果Url2通过而Url1失败,那很可能表明网络托管服务提供商的服务器存在问题。
为了简化,在配置文件中包含了一个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。在某些情况下,这段代码似乎是自动生成的。然而,只是复制了代码并根据需要进行了修改。
该方法向传递的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中的路径。