如何在azure中获取特定webjobs的进程ID?

时间:2017-05-22 10:41:10

标签: azure azure-webjobs

我想杀死网络工作,那么如何才能获得网络工作流程ID?

是否可以获得网络作业流程ID&使用编程杀死Web作业?

1 个答案:

答案 0 :(得分:1)

  

我想杀死网络工作,那么我怎样才能获得网络工作流程ID?是否有可能获得网络工作流程ID&使用编程杀死Web作业?

根据你的描述,我建议你可以使用kudu webjob停止休息api停止webjob。

杀死进程后,Web作业将自动重启。

您可以使用Kudu rest api来达到您的要求。

您可以先在azure Web应用程序中设置部署凭据,如下所示:

注意:记住用户名和密码,我们将使用它们来生成访问令牌

enter image description here

然后您可以编写代码来发送停止Web作业的请求,如下所示:

网址:https://yourwebsitename.scm.azurewebsites.net/api/continuouswebjobs/TestWebJob/stop

更多细节,您可以参考以下代码:

   string url = @"https://yourwebsitename.scm.azurewebsites.net/api/continuouswebjobs/TestWebJob/stop";

    var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

    httpWebRequest.Method = "POST";
    httpWebRequest.ContentLength = 0;

    string logininforation = "usename:password";

    byte[] byt = System.Text.Encoding.UTF8.GetBytes(logininforation);
    string encode = Convert.ToBase64String(byt);


    httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Basic " + encode);


    // Get the response
    HttpWebResponse httpResponse = null;

    httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

    Console.WriteLine(httpResponse.StatusCode);

如果您仍想要终止该过程,我建议您先将请求发送到以下网址以获取该过程。

网址:https://yourwebsitename.scm.azurewebsites.net/api/processes

如果你得到了这个过程,你可以向kudu发送一个删除请求来杀死webjob的进程。

更多细节,您可以参考下面的C#代码:

    string url = @"https://yourwebsitename.scm.azurewebsites.net/api/processes";

    var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);

    httpWebRequest.Method = "GET";
    httpWebRequest.ContentLength = 0;

    string logininforation = "username:password";

    byte[] byt = System.Text.Encoding.UTF8.GetBytes(logininforation);
    string encode = Convert.ToBase64String(byt);


    httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Basic " + encode);


    using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse())
    {
        using (System.IO.StreamReader r = new System.IO.StreamReader(response.GetResponseStream()))
        {
            string jsonResponse = r.ReadToEnd();

            dynamic result = JsonConvert.DeserializeObject(jsonResponse);

            dynamic resultList = result.Children();

            foreach (var item in resultList)
            {
                Console.WriteLine(item.name);
                if (item.name == "yourwebjobname")
                {
                    Console.WriteLine(item.href);
                    //begin to delete the webjob process
                    string url2 = item.href;
                    var httpWebRequest2 = (HttpWebRequest)WebRequest.Create(url2);
                    httpWebRequest2.Headers.Add(HttpRequestHeader.Authorization, "Basic " + encode);
                    httpWebRequest2.Method = "DELETE";
                    httpWebRequest2.ContentLength = 0;
                    HttpWebResponse httpResponse2 = null;
                    httpResponse2 = (HttpWebResponse)httpWebRequest2.GetResponse();

                }
            }
        }
    }