我想终止 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
然后您可以编写代码来发送停止网络作业的请求,如下所示:
网址: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/