【发布时间】:2011-04-12 06:05:49
【问题描述】:
如何使用 C# 获取 Web 服务的状态?无论是成功完成、失败还是像这样挂起。
【问题讨论】:
标签: c# asp.net web-services
如何使用 C# 获取 Web 服务的状态?无论是成功完成、失败还是像这样挂起。
【问题讨论】:
标签: c# asp.net web-services
private void button1_Click(object sender, EventArgs e)
{
var url = "servicsURL";
try
{
var myRequest = (HttpWebRequest)WebRequest.Create(url);
NetworkCredential networkCredential = new NetworkCredential("UserName", "password","domain");
// Associate the 'NetworkCredential' object with the 'WebRequest' object.
myRequest.Credentials = networkCredential;
var response = (HttpWebResponse)myRequest.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
// it's at least in some way responsive
// but may be internally broken
// as you could find out if you called one of the methods for real
MessageBox.Show(string.Format("{0} Available", url));
}
else
{
// well, at least it returned...
MessageBox.Show(string.Format("{0} Returned, but with status: {1}", url, response.StatusDescription));
}
}
catch (Exception ex)
{
// not available at all, for some reason
MessageBox.Show(string.Format("{0} unavailable: {1}", url, ex.Message));
}
}
【讨论】:
首先我发现了这个问题Web Service For Database/Website Status
你应该试试这段代码;
System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController("myService");
return sc.Status
你应该检查这段代码;
public static string PingHost(string args)
{
HttpWebResponse res = null;
try
{
// Create a request to the passed URI.
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(args);
req.Credentials = CredentialCache.DefaultNetworkCredentials;
// Get the response object.
res = (HttpWebResponse)req.GetResponse();
return "Service Up";
}
catch (Exception e)
{
MessageBox.Show("Source : " + e.Source, "Exception Source", MessageBoxButtons.OK);
MessageBox.Show("Message : " + e.Message, "Exception Message", MessageBoxButtons.OK);
return "Host Unavailable";
}
}
你也应该看看;
【讨论】:
如果您在同步模式下调用您的网络服务,则获取状态没有问题。
如果您在异步模式下调用您的网络服务,您应该设置一个回调函数并在返回给该回调函数的结果中跟踪网络服务状态。
【讨论】: