我已经创建了一个队列触发器函数.正如在Microsoft文档中提到的,我还添加了包"Microsoft.Azure.Functions.Worker"、"Microsoft.Azure.Functions.Worker.Sdk",但项目不在构建中,并且在包Microsoft.Azure.Functions.Worker.Sdk.Target中给出错误"指定条件"$(SelfContained)的计算结果为""而不是布尔值"".请参阅下面的csproj文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Azure.Identity" Version="1.10.4" />
<PackageReference Include="Dapper" Version="2.0.123" />
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.20.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues" Version="5.2.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.16.2" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="4.0.5" />
<PackageReference Include="SD.Dentaflows.Models" Version="1.1.10" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
<ItemGroup>
<Using Include="System.Threading.ExecutionContext" Alias="ExecutionContext" />
</ItemGroup>
</Project>
这是我的Program.cs类代码和函数类代码,我的主要目的是在我的函数中使用"RequestQueueWriteback Handler"的方法.
public class Program
{
public static void Main(string[] args)
{
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.ConfigureAppConfiguration((hostContext, configBuilder) =>
{
configBuilder.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
})
.ConfigureServices((hostContext, services) =>
{
services.AddTransient<RequestQueueWritebackFunction>();
services.AddSingleton<IRequestQueueWritebackService, RequestQueueWritebackHandler>();
})
.ConfigureLogging(logging =>
{
logging.SetMinimumLevel(LogLevel.Information);
})
.Build();
host.Run();
}
}
public class RequestQueueWritebackFunction
{
private readonly IRequestQueueWritebackService requestWritebackService;
public RequestQueueWritebackFunction(IRequestQueueWritebackService requestWritebackService)
{
this.requestWritebackService = requestWritebackService;
}
[FunctionName("RequestQueueWritebackFunction")]
public void Run([QueueTrigger("%RequestWritebackQueueName%", Connection = "WritebackConnectionString")] string myQueueItem, ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
var result = requestWritebackService.SaveRequestWritebackMessage();
}
}