2011-04-12 104 views

回答

0

首先,我发现这个问题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"; 
      } 
     } 

而且你也应该看看;

Using Session State in a Web Service

+0

我试过你的解决方案,但它提供异常服务'myservice'没有在计算机'computername'上找到。 – smartDev 2011-04-12 07:16:33

0

如果要调用在同步模式下你的web服务,没有与获取状态没有问题。

如果您在异步模式下调用webservice,则应该设置回调函数并跟踪返回给该回调函数的结果中的web服务状态。

1
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)); 
     } 

    }