我已经创建了一个队列触发器函数.正如在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();
    }
}

推荐答案

你需要像下面这样创建local.settings.json: 从WritebackConnectionString变到AzureWritebackConnectionString

{
  "IsEncrypted": false,
  "AzureWebJobsStorage": "StorageConnectionString",
  "Values": {
    "AzureWebJobsStorage": "StorageConnectionString",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "AzureWritebackConnectionString": "QueueConnection"
  }
}

Csharp相关问答推荐

C#中的两个线程之间读写浮点类型

当Visual Studio处于升级管理模式时,无法安装Torch运行时

如何从顶部提取发票号作为单词发票后的第一个匹配

在WPF.NET 6中使用C++/WinRT组件(但实际上是任何WinRT组件)

为什么在ANTLR4中会出现不匹配的输入错误?""

为什么任务需要在内部使用ManualResetEventSlim?

C#-从基类更新子类

共享暂存/生产环境中Azure事件中心的建议配置

如何在C#中创建VS代码中的控制台应用程序时自动生成Main方法

DbContext-传递自定义配置选项

是否可以将Collectionview中的数组与ObservableCollection绑定?

实体框架-IsRequired()与OnDelete()

用于获取字符串的最后12个字符的正则表达式(空格除外)

使用未赋值的、传递的局部变量

C#无法将.csv列转换为用于JSON转换的列表

FakeItEasy自动嘲弄内容

仅在ASP.NETCore应用程序中的附加单独端口上公开一组终结点

WPF:如何从DatagridHeader的内容模板绑定到词典项

try 访问字典中的模拟对象时引发KeyNotFoundException

使用SQL Server 2022+时,我是否必须将代码从SqlConnection类对象中迁移出来?