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

标签 azure azure-webjobs

我想终止 Web 作业,那么如何获取 Web 作业进程 ID?

是否可以使用编程获取 Web 作业进程 ID 并终止 Web 作业?

最佳答案

I want to kill web job so how can I get web job process id?is it possible to get web job process id & kill a web jobs using programming?

根据您的描述,我建议您可以使用 kudu webjob stop rest api 停止 webjob。

在您终止进程后,Web 作业将自动重新启动。

您可以使用 Kudu Rest api 来实现您的要求。

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

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

enter image description here

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

网址: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();

                }
            }
        }
    }

关于azure - 如何获取 azure 中特定 webjobs 的进程 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44110819/

相关文章:

azure - 延长 Azure AD 中的访问 token 生命周期

excel - 如何将 Azure 机器学习输出导出到 CSV

Azure VSO持续交付: Deploy specific site in multi-site solution

隔离模式下的 Azure Functions - 如何创建 HTTP 触发器

Azure 网站 WebJobs - 他们可以使用网站的应用程序设置或连接字符串吗

c# - 对于带有 QueueTrigger 的 Azure WebJob,设置计划有什么影响吗?

azure - 获取 CosmosDb 中分组文档的最大数量

azure - 如何保留公共(public)IP地址以供以后在Azure门户中使用?

azure - Azure Functions 绑定(bind)如何工作?

c# - Azure Web 作业多个连接字符串