为什么使用Microsoft Azure中继服务混合连接(.NET)时我没有收到来自侦听器应用程序的响应

问题描述 投票:0回答:1

安装程序(所有组件都用C#编写):(1)API服务(发送方)通过Microsoft Azure中继服务将包含用户数据的请求发送到控制台应用程序(侦听器)。(2)控制台应用程序反序列化请求正文并将数据传递给函数(3)该功能将数据保存到数据库中,并将成功或失败的响应发送回控制台应用程序(侦听器)。(4)根据从函数收到的响应,控制台应用程序(侦听器)将响应发送回API服务。

问题:当我向API发送请求(使用Postman测试)时,我没有从监听器应用程序收到任何响应。我可以验证上面的第1步到第3步是否成功完成,因为我可以看到数据库中的数据,也可以验证当我单步执行代码时函数是否返回值。

监听器应用程序代码

            var registrant = JsonConvert.DeserializeObject<Registrant>(requestBody);
            var result = AddRegistrantToDB(registrant);

            if (result)
            {
                context.Response.StatusCode = HttpStatusCode.OK;
                context.Response.StatusDescription = "Added to the database";
                using (var sw = new StreamWriter(context.Response.OutputStream))
                {
                    sw.WriteLine("true");
                }
            }

            else
            {
                context.Response.StatusCode = HttpStatusCode.BadRequest;
                context.Response.StatusDescription = "Bad Request";
                using (var sw = new StreamWriter(context.Response.OutputStream))
                {
                    sw.WriteLine("false");
                }
            }
            await context.Response.CloseAsync();
            Console.WriteLine("Response Sent " + context.Response.StatusCode.ToString());

API服务代码

        var request = new HttpRequestMessage()
        {
            RequestUri = uri,
            Method = HttpMethod.Post,
            Content = stringContent
        };

        request.Headers.Add("ServiceBusAuthorization", token);

        var response = await client.SendAsync(request);

        if (response.StatusCode == HttpStatusCode.OK)
        {
            return true;
        }
        else
        {
            return false;
        }
c# azure azure-hybrid-connections
1个回答
0
投票

在您的API服务中尝试一下:

        var request = new HttpRequestMessage()
        {
            RequestUri = uri,
            Method = HttpMethod.Post,
            Content = stringContent
        };

        request.Headers.Add("ServiceBusAuthorization", token);

        HttpResponseMessage response;
        using (response = await client.SendAsync(request))
        {
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }

        if (response.StatusCode == HttpStatusCode.OK)
        {
            return true;
        }
        else
        {
            return false;
        }
© www.soinside.com 2019 - 2024. All rights reserved.