【问题标题】:How to get status of web service如何获取网络服务的状态
【发布时间】:2011-04-12 06:05:49
【问题描述】:

如何使用 C# 获取 Web 服务的状态?无论是成功完成、失败还是像这样挂起。

【问题讨论】:

    标签: c# asp.net web-services


    【解决方案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));
            }
    
        }
    

    【讨论】:

      【解决方案2】:

      首先我发现了这个问题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

      【讨论】:

      • 我尝试了您的解决方案,但它给出了异常-在计算机“计算机名”上找不到服务“myservice”。
      【解决方案3】:

      如果您在同步模式下调用您的网络服务,则获取状态没有问题。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        • 1970-01-01
        相关资源
        最近更新 更多