<
UsingTask
TaskName
=
"TestWebAppAvailable"
TaskFactory
=
"CodeTaskFactory"
AssemblyFile
=
"$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"
>
<
ParameterGroup
>
<
hostname
ParameterType
=
"System.String"
Required
=
"true"
/>
<
servers
ParameterType
=
"System.String[]"
Required
=
"true"
/>
<
Result
ParameterType
=
"System.String"
Output
=
"true"
/>
</
ParameterGroup
>
<
Task
>
<
Reference
Include
=
"System.IO"
/>
<
Reference
Include
=
"System.Net"
/>
<
Using
Namespace
=
"System"
/>
<
Using
Namespace
=
"System.IO"
/>
<
Using
Namespace
=
"System.Net"
/>
<
Code
Type
=
"Fragment"
Language
=
"cs"
>
<![CDATA[
string requestUrl = "http://" + hostname + "/Default.aspx";
Result = "success";
foreach (string server in servers)
{
Log.LogMessage("Server: " + server, MessageImportance.Normal);
if (string.IsNullOrEmpty(server))
{
continue;
}
Log.LogMessage("Warming up: " + requestUrl, MessageImportance.Normal);
System.Net.HttpWebResponse res = null;
try
{
System.Net.WebRequest wr = System.Net.WebRequest.Create(requestUrl);
wr.Timeout = 20000;
wr.Proxy = new System.Net.WebProxy("http://" + server, false);
res = (HttpWebResponse)wr.GetResponse();
Log.LogMessage(server + " - " + res.StatusCode, MessageImportance.Normal);
}
catch (System.Net.WebException ex)
{
res = (HttpWebResponse)ex.Response;
Log.LogMessage("EXCEPTION: " + ex.ToString(), MessageImportance.High);
Log.LogMessage("res == null: " + (res == null).ToString(), MessageImportance.High);
Log.LogMessage("Server: " + server, MessageImportance.High);
Log.LogMessage("res.StatusCode: " + (res != null ? res.StatusCode.ToString() : "Res was null"), MessageImportance.High);
}
catch (System.Exception ex) {
throw;
}
Log.LogMessage("res == null: " + (res == null).ToString(), MessageImportance.High);
if (res.StatusCode != System.Net.HttpStatusCode.OK)
{
string message = server + " Web request failed with code: " + res.StatusCode.ToString();
System.Net.WebException exception = new System.Net.WebException(message);
if (res != null)
{
res.Close();
}
Result = server;
Log.LogMessage("EXCEPTION: " + message, MessageImportance.High);
break;
}
if (res != null)
{
res.Close();
}
}
]]>
</
Code
>
</
Task
>
</
UsingTask
>