我想杀死网络工作,那么如何才能获得网络工作流程ID?
是否可以获得网络作业流程ID&使用编程杀死Web作业?
答案 0 :(得分:1)
我想杀死网络工作,那么我怎样才能获得网络工作流程ID?是否有可能获得网络工作流程ID&使用编程杀死Web作业?
根据你的描述,我建议你可以使用kudu webjob停止休息api停止webjob。
杀死进程后,Web作业将自动重启。
您可以使用Kudu rest api来达到您的要求。
您可以先在azure Web应用程序中设置部署凭据,如下所示:
注意:记住用户名和密码,我们将使用它们来生成访问令牌
然后您可以编写代码来发送停止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();
}
}
}
}