从 Azure 函数 .net6(函数 v4)获取绑定数据
Getting Bindingdata from Azure function .net6 (function v4)
在 dotnet5(函数 v3)中,我们可以通过调用 functionContext.BindingContext.BindingData.TryGetValue("Metadata", out var meta) 从 FunctionContext 中获取元数据;
但是 dotnet 6 (v4) 似乎没有这个选项。
Azure function v3 (.net5)
任何人都可以通过为新的 dotnet 6 (v4) 函数提供正确的实现来帮助我
要将 .net6 与 Function V4 一起使用,我们需要 VS 2022 环境或 VS CODE。
我已经尝试使用一个简单的 blobtrigger azure 函数 运行 .net 5,它可以很好地获取元数据。
using System;
using System.IO;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace testfuncapp
{
public static class Function1
{
[Function("Function1")]
public static void Run([BlobTrigger("test/{name}", Connection = "AzureWebJobsStorage")] string myBlob, string name,
FunctionContext context)
{
var logger = context.GetLogger("Function1");
logger.LogInformation($"C# Blob trigger function Processed blob\n Name: {name} \n Data: {myBlob}");
}
}
}
输出:-
我们在 .net 6 环境中尝试过的相同代码也可以正常工作。
为此打开 VS CODE 并使用 .net 6 和函数运行时版本将 .csproj 文件更新为 V4
Install Function runtime v4
在你的本地 .
注意:我们最后只需要安装一个运行时版本。
更新.csproj
文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<OutputType>Exe</OutputType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage" Version="4.0.4" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.2.0" OutputItemType="Analyzer" />
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.5.2" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
并将 settings.json
文件更新为 .net 6
并将函数运行时更新为 V4 然后保存。
然后使用如下命令:
1- dotnet restore
2- dotnet build
3- func host start
输出:-
更多信息请参考以下链接:
博客:Migration from Asp.Net Core 5.0 to 6.0
微软问答:Migrating Auzre Function runtime version from 3.x to 4.x not working in VS 2019
在 dotnet5(函数 v3)中,我们可以通过调用 functionContext.BindingContext.BindingData.TryGetValue("Metadata", out var meta) 从 FunctionContext 中获取元数据; 但是 dotnet 6 (v4) 似乎没有这个选项。
Azure function v3 (.net5)
任何人都可以通过为新的 dotnet 6 (v4) 函数提供正确的实现来帮助我
要将 .net6 与 Function V4 一起使用,我们需要 VS 2022 环境或 VS CODE。
我已经尝试使用一个简单的 blobtrigger azure 函数 运行 .net 5,它可以很好地获取元数据。
using System;
using System.IO;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace testfuncapp
{
public static class Function1
{
[Function("Function1")]
public static void Run([BlobTrigger("test/{name}", Connection = "AzureWebJobsStorage")] string myBlob, string name,
FunctionContext context)
{
var logger = context.GetLogger("Function1");
logger.LogInformation($"C# Blob trigger function Processed blob\n Name: {name} \n Data: {myBlob}");
}
}
}
输出:-
为此打开 VS CODE 并使用 .net 6 和函数运行时版本将 .csproj 文件更新为 V4
Install Function runtime v4
在你的本地 .
注意:我们最后只需要安装一个运行时版本。
更新.csproj
文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
<OutputType>Exe</OutputType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage" Version="4.0.4" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.2.0" OutputItemType="Analyzer" />
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.5.2" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
并将 settings.json
文件更新为 .net 6
并将函数运行时更新为 V4 然后保存。
然后使用如下命令:
1- dotnet restore
2- dotnet build
3- func host start
输出:-
更多信息请参考以下链接:
博客:Migration from Asp.Net Core 5.0 to 6.0
微软问答:Migrating Auzre Function runtime version from 3.x to 4.x not working in VS 2019