C# 如何让自动化帐户Webhook在ASP.NET中返回值
我不熟悉ASP.NET开发和Webhook的使用。 我正在使用ASP.NET和一个拥有webhook的Azure自动化帐户。我目前可以执行webhook,但是我希望让我的代码等待,直到它收到webhook的输出。如何最好地做到这一点 ASP.NET代码:C# 如何让自动化帐户Webhook在ASP.NET中返回值,c#,asp.net,webhooks,azure-automation,C#,Asp.net,Webhooks,Azure Automation,我不熟悉ASP.NET开发和Webhook的使用。 我正在使用ASP.NET和一个拥有webhook的Azure自动化帐户。我目前可以执行webhook,但是我希望让我的代码等待,直到它收到webhook的输出。如何最好地做到这一点 ASP.NET代码: public ActionResult UpdateAll() { (random db calls) string jsonList = JsonConvert.SerializeObject(userEnvironment
public ActionResult UpdateAll()
{
(random db calls)
string jsonList = JsonConvert.SerializeObject(userEnvironmentList);
try
{
string uri = "webhook_url";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
string data = jsonList;
request.Method = "POST";
request.ContentType = "text/plain;charset=utf-8";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] bytes = encoding.GetBytes(data);
request.ContentLength = bytes.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
}
request.BeginGetResponse((x) =>
{
using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(x))
{
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
}
}, null);
}
catch (Exception ex)
{
throw ex;
}
return View();
}
自动化账户中的PS:
param
(
[Parameter (Mandatory = $false)]
[object] $WebhookData
)
if ($WebhookData) {
return "Finally this works"
}
然后在同步上下文中调用GetResponse 改变
request.BeginGetResponse((x) =>
{
using (HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(x))
{
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
}
}, null);
到
var response = (HttpWebResponse)webRequest.GetResponse();
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
注意:GetResponse()等待底层web请求完成,然后返回结果。无需在代码上下文中使用BeginGetResponse()。谢谢!然而,我得到的回应仍然是webhook的jobId,而不是“最终成功”。