标签: azure-functions

函数“Function1”的侦听器无法启动

在本地运行简单的计时器触发器 Azure 函数时,出现以下错误。

我使用 Visual Studio 2019 创建带有计时器触发器的新 Azure Functions 项目。

我安装了 Azure 开发工作负载。 已安装 Azure 开发工作负载

代码:

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace FunctionApp1
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([TimerTrigger("*/12 * * * * *")]TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:

[2021-11-24T15:45:29.878Z] The listener for function 'Function1' was unable to start.
[2021-11-24T15:45:29.880Z] The listener for function 'Function1' was unable to start. Azure.Storage.Blobs: Server encountered an …
Run Code Online (Sandbox Code Playgroud)

azure-functions

1
推荐指数
1
解决办法
8747
查看次数

只有一个 Azure Function 实例?

我找不到任何有关如何强制 Azure Function v4 成为单例的文档,因此当函数应用程序横向扩展(出于某种原因)时,其中一个函数不会横向扩展。

我的函数是一个定时器触发器,位于 v4 .NET6.0 隔离的 Azure 函数中。

.net azure-functions

1
推荐指数
1
解决办法
3889
查看次数

Azure Functions - Microsoft.NET.Sdk.Functions U1100 错误

我正在尝试设置 Visual Studio Code,以便可以修改 Azure Functions,但似乎遇到了一些问题。我使用的指南是 MS 官方文档,可以在此处找到。

当我第一次运行代码时,出现以下错误:

U1100:无法解析“net6.0”的“Microsoft.NET.Sdk.Functions (>= 4.0.1)”

我看过一些类似的帖子,其中用户遇到了这个问题,但它是在旧版本上,并且没有找到适合我的设置的明显答案。如果整个安装是新的,那么从这个角度来看应该不会有任何问题。

任何帮助将不胜感激。

下面是我的 csproj 文件。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <RootNamespace>Azure_Functions</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.0.1" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

c# azure-functions

1
推荐指数
1
解决办法
1043
查看次数

如何访问 Azure Function 隔离进程中服务总线消息的 ApplicationProperties?

我有一条服务总线消息,其中ApplicationProperties添加了一些内容:

ServiceBusMessage serviceBusMessage
serviceBusMessage.ApplicationProperties.Add("TenantId", tenantId);
serviceBusMessage.ApplicationProperties.Add("Serialization", "JSON");
Run Code Online (Sandbox Code Playgroud)

我需要从我的 Azure 函数访问这些。在类库风格的函数应用程序中,我可以使用,但ServiceBusReceivedMessage在进程外似乎没有等效的东西?

c# azure azureservicebus azure-functions

1
推荐指数
1
解决办法
3401
查看次数

Azure Functions - Functions 主机未运行

我在 Azure 函数的运行状况检查中不断收到错误 503,它显示错误 503。函数主机未运行。这是非常不一致的,每隔几天才会发生一次,我正在使用消费计划,但正在考虑高级计划是否可以解决这个问题。

azure azure-functions

1
推荐指数
1
解决办法
8144
查看次数

Azure Functions V4 // ServiceBusTrigger 和绑定属性,例如 Message 或 MessageReceiver

我正在开发一个带有 ServiceBusTrigger 队列的 Azure Function(进程内模型,V 4.1)。该函数工作正常并被触发。该函数如下所示:

    public async Task Run([ServiceBusTrigger("my-queue", Connection = "myConnectionString", AutoCompleteMessages = true)]
        string myQueueItem, Int32 deliveryCount, DateTime enqueuedTimeUtc, string messageId)
Run Code Online (Sandbox Code Playgroud)

我现在希望能够获取我在消息中传递的correlationId,并且我希望能够自己“Complete()”消息。

我在这里查看了文档(https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-trigger?tabs=in-process%2Cextensionv5&pivots=programming-language-csharp)但没有找到任何方法来绑定其他参数,如 Message、MessageReceiver 等。每当我尝试使用这些参数时,函数运行时都会出现绑定异常。

这些是我正在使用的相关包

<PackageReference Include="Azure.Messaging.ServiceBus" Version="7.7.0" />
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Core" Version="1.4.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="5.3.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.0" />
Run Code Online (Sandbox Code Playgroud)

我一定错过了一些东西......任何提示都会受到赞赏!

编辑:清理后,这些是相关的包:

<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="5.3.0" />
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.3" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.0" />
Run Code Online (Sandbox Code Playgroud)

azureservicebus azure-servicebus-queues azure-functions

1
推荐指数
1
解决办法
2557
查看次数

是否可以监听具有多个azure功能的服务总线?

我正在尝试侦听可以包含具有多种事件类型的消息的服务总线。当消息到达时,我想根据事件类型对其进行处理。我有 2 个 azure 函数来处理不同的事件类型消息,但是当一个函数接收到消息时,另一个函数不会被触发。是否可以同时触发它们并让它们决定由哪一个处理消息?

这是一些示例代码,它们位于两个独立的项目中:

[FunctionName("Function1")]
public async Task RunAsync(
    [ServiceBusTrigger("queueName", Connection = "connectionName")]
    Message message,
    MessageReceiver messageReceiver,
    ILogger log)
{
    var body = Encoding.Default.GetString(message.Body);
    var messageType = _helper.GetMessageType(body);

    if (messageType is not MessageType.Type1)
        return;

    // business logic
    await messageReceiver.CompleteAsync(message.SystemProperties.LockToken);
}

[FunctionName("Function2")]
public async Task RunAsync(
    [ServiceBusTrigger("queueName", Connection = "connectionName")]
    Message message,
    MessageReceiver messageReceiver,
    ILogger log)
{
    var body = Encoding.Default.GetString(message.Body);
    var messageType = _helper.GetMessageType(body);

    if (messageType is not MessageType.Type2)
        return;

    // business logic

    await messageReceiver.CompleteAsync(message.SystemProperties.LockToken);
}
Run Code Online (Sandbox Code Playgroud)

.net c# azure azureservicebus azure-functions

1
推荐指数
1
解决办法
1876
查看次数

从服务总线队列消费批量消息而不是为每条消息触发它的方法

我们有一个服务总线队列;我们正在考虑通过Azure函数中的服务总线队列触发器来处理消息。但我们希望(在循环中)使用批量消息,而不是为每条消息重新触发 Function App。应该采取什么方法来实现这一点以及使用哪个处理程序。如果仅使用 Azure Function,或者我们可以托管一个应用服务来使用它。

azure .net-core azure-functions

1
推荐指数
1
解决办法
3012
查看次数

具有 V2 身份验证的 Azure Function 的 ARM 模板

我一直在使用 ARM 模板来部署 Azure Function,并使用 V1 身份验证进行 Azure Ad b2c 身份验证。

    "resources": [{
        "name": "[concat(parameters('appName'), '/authsettings')]",
        "apiVersion": "2016-08-01",
        "type": "Microsoft.Web/sites/config",
        "location": "[resourceGroup().location]",
        "dependsOn": [
          "[resourceId('Microsoft.Web/sites', parameters('appName'))]"
        ],
        "properties": {
          "enabled": true,
          "unauthenticatedClientAction": "RedirectToLoginPage",
          "tokenStoreEnabled": true,
          "clientSecret":"[parameters('b2cClientSecret')]",
          "clientId": "[parameters('b2cClientId')]",
          "issuer": "[parameters('b2cMetadataDocumentUrl')]"
        }
      }] 
Run Code Online (Sandbox Code Playgroud)

一切都工作正常,直到我开始收到从Azure 门户中的经典身份验证体验升级的消息。

在此输入图像描述

收到此消息后,部署失败并显示以下消息

##[error]At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.
##[error]Details:
##[error]undefined: Cannot execute the request for site app-fun-my-af because the site is running on …
Run Code Online (Sandbox Code Playgroud)

azure azure-resource-manager azure-ad-b2c azure-rm-template azure-functions

1
推荐指数
1
解决办法
1731
查看次数

Azure 服务总线:一次处理 1 条消息

现在,我们使用 Azure 服务总线来触发我们的函数应用程序。传入消息的速率非常高,但我们希望一次仅触发函数应用程序一条消息(按照我们自己的节奏进行处理,而不是处理太多请求错误)。如何配置服务总线一次只向接收者发送一条消息?这是我们的基本功能应用程序代码:

    [FunctionName("ServiceBusListener")]
    public void Run([ServiceBusTrigger("myqueue", Connection = "MyConnection")]string queueContent, ILogger log)
    {
        _myService.ProcessMessage(queueContent);
        log.LogInformation($"C# ServiceBus queue trigger function processed message: {queueContent}");
    }
Run Code Online (Sandbox Code Playgroud)

c# azure azureservicebus .net-core azure-functions

1
推荐指数
1
解决办法
2213
查看次数