.NET 7:从 Visual Studio Code 本地运行/调试 Azure Function(作为独立进程)

Die*_*rez 5 .net c# xunit visual-studio-code azure-functions

我使用以下非常简单的 Program.cs 创建了一个 AZ 函数项目:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .Build();

host.Run();

public partial class Program { }
Run Code Online (Sandbox Code Playgroud)

以及下一个 -dummy- 函数:

[Function("RabbitMQFunction")]
    public void Run
    (
        [RabbitMQTrigger("EmailQueue", ConnectionStringSetting = "xxx:xxx:services:infraestructure:emailservice:rabbitmq")] string item,
        FunctionContext context)
    {
        var logger2 = context.GetLogger("RabbitMQFunction");
        logger2.LogInformation($"Output message created at {DateTime.Now}");
    }
Run Code Online (Sandbox Code Playgroud)

本地.settings.json:

{
    "ConnectionStrings": {
        "xxx:xxx:services:infraestructure:emailservice:rabbitmq": "connection_string"
    },
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
    }
}
Run Code Online (Sandbox Code Playgroud)

主机.json:

{
    "version": "2.0",
    "logging": {
        "applicationInsights": {
            "samplingSettings": {
                "isEnabled": true,
                "excludedTypes": "Request"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

属性> launchSettings.json:

{
  "profiles": {
    "xxx_xxx_Services_Infrastructure_EmailService": {
      "commandName": "Project",
      "commandLineArgs": "--port 7246",
      "launchBrowser": false
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以从命令行使用 func start 毫无问题地运行该函数(我已经安装了 Azure Functions Core Tools),但是当我尝试从 vscode运行/调试该函数时,会引发以下异常:

Exception has occurred: CLR/System.InvalidOperationException
An exception of type 'System.InvalidOperationException' occurred in System.Private.CoreLib.dll but was not handled in user code: 'The gRPC channel URI 'http://:63205' could not be parsed.'
   at Microsoft.Extensions.DependencyInjection.GrpcServiceCollectionExtensions.<>c.<AddGrpc>b__1_1(IServiceProvider p)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite callSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at ...
Run Code Online (Sandbox Code Playgroud)

接下来我可以尝试什么?

vol*_*ody 0

在 AZURE -> 工作空间 -> 本地项目下选择“初始化项目以与 VS Code 一起使用...”,或使用命令选项板(Mac 上为 Shift+Cmd+P,Windows 上为 Shift+Ctrl+P)并执行命令 Azure功能:初始化项目以与 VS Code\xe2\x80\xa6 一起使用

\n

这将“将所需的 Visual Studio Code 项目文件添加到现有的 Functions 项目中。使用此命令可处理您使用 Core Tools 创建的项目。”

\n