我正在寻找测试一个网站是否在C#应用程序中存活的最佳方法.
我的应用程序包括一个Winforms UI,一个后端WCF服务和一个向UI和其他消费者发布内容的网站.为了防止由于缺少WCF服务或网站关闭而导致UI启动并且无法正常工作的情况,我添加了应用启动检查以确保所有内容都处于活动状态.
该应用程序是用C#,.NET 3.5,Visual Studio 2008编写的
目前,我正在向网站上的测试页面发出Web请求,该测试页面将对网站进行测试,然后显示结果.
WebRequest request = WebRequest.Create("http://localhost/myContentSite/test.aspx");
WebResponse response = request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
我假设如果在此调用期间没有异常,那么一切都很好,UI可以启动.
这是最简单,正确的方式,还是在C#中我还不知道其他一些偷偷摸摸的电话或更好的方法.
Ech*_*orm 83
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response == null || response.StatusCode != HttpStatusCode.OK)
Run Code Online (Sandbox Code Playgroud)
Max*_*mus 20
在使用WebResponse时,请确保关闭响应流即(.close)否则在重复执行后会挂起机器.例如
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sURL);
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
// your code here
response.Close();
Run Code Online (Sandbox Code Playgroud)
来自CodePlex上的NDiagnostics项目......
public override bool WebSiteIsAvailable(string Url)
{
string Message = string.Empty;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
// Set the credentials to the current user account
request.Credentials = System.Net.CredentialCache.DefaultCredentials;
request.Method = "GET";
try
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
// Do nothing; we're only testing to see if we can get the response
}
}
catch (WebException ex)
{
Message += ((Message.Length > 0) ? "\n" : "") + ex.Message;
}
return (Message.Length == 0);
}
Run Code Online (Sandbox Code Playgroud)
我们今天可以使用HttpClient()更新答案:
HttpClient Client = new HttpClient();
var result = await Client.GetAsync("https://stackoverflow.com");
int StatusCode = (int)result.StatusCode;
Run Code Online (Sandbox Code Playgroud)