c# - Azure功能未将消息发布到服务总线

标签 c# azure .net-core azure-functions azureservicebus

我创建了一个通过 Http 触发的函数应用程序。函数应用应将消息发布到 Azure 服务总线主题。由于某些原因,我没有收到该主题中发布的任何消息。我已成功触发功能应用程序。我不确定我在这里做错了什么。下面是我的代码。

     [FunctionName("MessageProcessorFunction")]
            [return: ServiceBus("mytopic", Connection = "Endpoint=sb://abcsb.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=wBCZ4ssssssohbg1ZUYKw4q8cpKaoZLIG9NR28ZoUDhBG8=")]
            public async Task<string> Run(
               [HttpTrigger(AuthorizationLevel.Function, "post", Route = "sms")] HttpRequest req,
               ILogger log)
            {
                log.LogInformation("HTTP trigger function processed a request.");

                return "hello World";
            }

但是,下面的控制台应用程序已成功将消息发布到服务总线主题。这是代码

    TopicClient _topicClient = new TopicClient("Endpoint=sb://abcsb.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=wBCZ4ssssssohbg1ZUYKw4q8cpKaoZLIG9NR28ZoUDhBG8=", "whispir");
                string data = JsonConvert.SerializeObject("Hello world");
                Message message = new Message(Encoding.UTF8.GetBytes(data));

                try
                {
                    await _topicClient.SendAsync(message);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }

local.settings.json

"IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet",
        "ServiceBusConnectionString": "Endpoint=sb://abcsb.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=wBCZ4okoohbg1ZUYKw4q8cpKaoZLIG9NR28ZoUDhBG8="

}

有什么想法吗?

-艾伦-

最佳答案

Connection 属性应该接收设置 key ,而不是实际的连接字符串。

如果您想在本地尝试,则必须更改 local.settings.json 文件并将连接字符串添加到特定键:

{
  "Values": {
    "ServiceBusConnectionString": "Endpoint=sb://abcsb.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=wBCZ4ssssssohbg1ZUYKw4q8cpKaoZLIG9NR28ZoUDhBG8="
  }
}

然后,在您的函数中使用它,如下所示:

[FunctionName("MessageProcessorFunction")]
[return: ServiceBus("mytopic", Connection = "ServiceBusConnectionString")]
public async Task<string> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = "sms")] HttpRequest req,
    ILogger log)
{
    log.LogInformation("HTTP trigger function processed a request.");

    return "hello World";
}

应该可以工作。
如果没有请告诉我。 :)

关于c# - Azure功能未将消息发布到服务总线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57670356/

相关文章:

.NET Core 2.0 应用程序发布为 deb 文件

C# 网络问题多进程

C# 架构验证返回 false 成功

c# - 通过 C# 在 Excel 中运行 vba 脚本

asp.net - 登录在 Azure 中运行的 ASP.NET 网站的正确方法

azure - 如何从 Azure VM 收集 SSH 日志并将其推送到日志分析工作区

c# - AutoMapper - 从 v8 升级到 v9 后不使用泛型

azure - 如何从 Power Automate 触发 Azure ML Pipeline

c# - Blazor onclick 事件从循环中传入计数器

azure - Serilog 在 Azure Application Insight 中记录消息的一部分