Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何让自动化帐户Webhook在ASP.NET中返回值_C#_Asp.net_Webhooks_Azure Automation - Fatal编程技术网

C# 如何让自动化帐户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

我不熟悉ASP.NET开发和Webhook的使用。 我正在使用ASP.NET和一个拥有webhook的Azure自动化帐户。我目前可以执行webhook,但是我希望让我的代码等待,直到它收到webhook的输出。如何最好地做到这一点

ASP.NET代码:

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,而不是“最终成功”。