我有一个简单的 .NET 7 点网隔离 Azure 函数,具有服务总线输出绑定:
[Function(nameof(abc))]
[ServiceBusOutput("abc", Connection = "abcServiceBusConnection")]
public async Task<ServiceBusMessage> RunDebug([HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequestData request)
{
using var streamReader = new StreamReader(request.Body);
var requestBody = await streamReader.ReadToEndAsync();
return await Execute(requestBody);
}
private async Task<ServiceBusMessage> Execute(string input)
{
// logic...
var s = new ServiceBusMessage(
JsonConvert.SerializeObject(
new
{
Id = "abc",
Container = "xyz"
}))
{
Subject = "sub1"
};
return s;
}
问题是,每条消息的正文都是空的:
为什么会这样?是否可以使用
service bus
返回 subject/label
消息并从 azure 函数返回 string
?
这个方法行不通。要返回消息,只能使用基本类型,例如
string
或 byte[]
。要返回 SDK 类型 ServiceBusMessage
,您需要注入 ServiceBusClient
并创建一个发送者来发送您的消息。或多条消息。
请参阅此问题了解详细信息和原因。