为什么服务总线输出绑定不适用于Azure函数?-没有错误



我尝试将HTTPTriggered消息发送到服务总线输出。我正在关注的样本https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-output?tabs=csharp

当我从Visual Studio代码中执行此代码时,不会出现任何错误。在这个程序中,我正在本地调试。

然而,服务总线门户表示有0条传入消息。可能出了什么问题?代码有问题吗?

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Microsoft.ServiceBus.Messaging;
using Microsoft.ServiceBus;

namespace Company.Function
{
public static class HttpTriggerCSharp1
{
[FunctionName("ServiceBusOutput")]
[return: ServiceBus("queue1", Connection ="Endpoint=sb://12345servicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=12345+cmc8501HJ6Ips2OxIZKtO6gctT8d1ZpNN0GNw=")]
public static string ServiceBusOutput([HttpTrigger] dynamic input, ILogger log)
{
//log.LogInformation($"C# function processed: {input.Text}");
//return input.Text;
return "MessageToServiceBus123"
}
}

}

Http Functions:
ServiceBusOutput:  http://localhost:7071/api/ServiceBusOutput
[10.3.2020 21.35.37] Host lock lease acquired by instance ID '0000000000000000000000008457DB20'.
[10.3.2020 21.35.44] Executing HTTP request: {
[10.3.2020 21.35.44]   "requestId": "0ccbb526-b861-407a-893c-cc0821b20535",
[10.3.2020 21.35.44]   "method": "GET",
[10.3.2020 21.35.44]   "uri": "/api/ServiceBusOutput"
[10.3.2020 21.35.44] }
[10.3.2020 21.35.45] Executing 'ServiceBusOutput' (Reason='This function was programmatically called 
via the host APIs.', Id=faf4083f-504a-473b-b9fa-22ac0783cdb0)
[10.3.2020 21.35.45] Executed 'ServiceBusOutput' (Succeeded, Id=faf4083f-504a-473b-b9fa-22ac0783cdb0)
[10.3.2020 21.35.45] Executed HTTP request: {
[10.3.2020 21.35.45]   "requestId": "0ccbb526-b861-407a-893c-cc0821b20535",
[10.3.2020 21.35.45]   "method": "GET",
[10.3.2020 21.35.45]   "uri": "/api/ServiceBusOutput",
[10.3.2020 21.35.45]   "identities": [
[10.3.2020 21.35.45]     {
[10.3.2020 21.35.45]       "type": "WebJobsAuthLevel",
[10.3.2020 21.35.45]       "level": "Admin"
[10.3.2020 21.35.45]     }
[10.3.2020 21.35.45]   ],
[10.3.2020 21.35.45]   "status": 200,
[10.3.2020 21.35.45]   "duration": 906
[10.3.2020 21.35.45] }
[10.3.2020 21.35.45] Executing HTTP request: {
[10.3.2020 21.35.45]   "requestId": "d2587ceb-f728-4cda-be99-ff7852384a59",
[10.3.2020 21.35.45]   "method": "GET",
[10.3.2020 21.35.45]   "uri": "/favicon.ico"
[10.3.2020 21.35.45] }
[10.3.2020 21.35.46] Executed HTTP request: {
[10.3.2020 21.35.46]   "requestId": "d2587ceb-f728-4cda-be99-ff7852384a59",
[10.3.2020 21.35.46]   "method": "GET",
[10.3.2020 21.35.46]   "uri": "/favicon.ico",
[10.3.2020 21.35.46]   "identities": [],
[10.3.2020 21.35.46]   "status": 404,
[10.3.2020 21.35.46]   "duration": 645
[10.3.2020 21.35.46] }

正如文件所说,

您可以设置Connection属性来指定应用程序的名称包含要使用的服务总线连接字符串的设置

您应该在local.settings.json中将连接字符串值设置为键值对,并提及密钥

例如

[FunctionName("ServiceBusOutput")]
[return: ServiceBus("myqueue", Connection = "ServiceBusConnection")]
public static string Run([HttpTrigger] dynamic input, ILogger log)

Local.settings.json

{  
"ServiceBusConnection": "whatever connection string"
}

最新更新