安装程序(所有组件都用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;
}
在您的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;
}