【问题标题】:Running dotnet-isolated AzureFunction does not work运行 dotnet-isolated AzureFunction 不起作用
【发布时间】:2022-01-19 17:27:36
【问题描述】:

我使用 .net 6.0 开发了 Azure Function v4。它只包含 http 触发的函数。

本地一切正常,但在将其部署到 Azure 后,我只能通过调用任何端点获得 500 状态代码,并且它总是在 Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcherLoadBalancer.GetLanguageWorkerChannel 处抛出 InvalidOperationException没有找到任何已初始化的语言工作者

  • 应用程序设置

  • 操作系统:Windows
  • 运行时版本:4.0.1.16815
  • 位置:西欧

更新添加更多信息

项目文件:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <AzureFunctionsVersion>v4</AzureFunctionsVersion>
        <OutputType>Exe</OutputType>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="11.0.0" />
        <PackageReference Include="Microsoft.ApplicationInsights" Version="2.20.0" />
        <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.6.0" />
        <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.OpenApi" Version="1.0.0" />
        <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.0.13" />
        <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.3.0" OutputItemType="Analyzer" />
    </ItemGroup>
    <ItemGroup>
        <None Update="host.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="local.settings.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
    </ItemGroup>
</Project>

local.settings.json


{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "StorageConnectionString": "UseDevelopmentStorage",
        "APPINSIGHTS_INSTRUMENTATIONKEY": "MyInstrumentationKey"
    },
    "Host": {
        "LocalHttpPort": 7071,
        "CORS": "*"
    }
}

【问题讨论】:

  • 重启函数应用有什么不同吗?
  • 不幸的是:没有
  • 不会改变任何东西 :-(

标签: c# .net azure azure-functions


【解决方案1】:

解决此问题的解决方法之一:

  1. 在 Visual Studio 中创建 Azure Functions(堆栈:.Net 6 隔离)并在本地运行:

  1. 在 Azure 门户中部署 Function App 后(堆栈:.Net 6,位置:西欧,操作系统:Windows,计划:消费,函数运行时:隔离)

这是配置:

部署后,函数URL运行成功:


  1. 我可以看到一个名为 WEBSITE_NODE_DEFAULT_VERSION 的设置已添加到您的 .Net Function App 配置设置中。

如果您的函数不是使用 node.js 创建的,并且您没有在代码中明确使用此应用程序设置,那么您可以从您的函数应用程序中删除此属性。这在MSFT Q&A 中有说明。

  1. 此类错误的其他原因是
    • Functions Runtime 已初始化,但未能初始化 Language Worker。因此,Functions Runtime 检测到工作通道尚未启动,并在进一步调用时记录错误消息。

注意: 5. 尝试在 Azure 门户中重新创建函数应用程序(.Net 6 - Windows 操作系统 - 西欧位置)并从 Visual Studio 部署您的 HTTP 触发器函数。 或者 6.尝试删除WEBSITE_NODE_DEFAULT_VERSION设置>保存>重新启动Azure门户中的应用程序并运行该功能。 7. 确保此设置在您的函数应用 local.settings.json 文件中为“FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated”。 8.此错误可能是由于Functions worker版本和SDK版本不匹配造成的。如果有可用的更新,请通过 NuGet 数据包管理器进行更新:

此外,此错误存在于以前版本的 dotnet Isolated is 5 和 Azure Functions 版本 V3 中。

参考资料:

  1. azure-functions-dotnet-worker/issues
  2. https://github.com/Azure/azure-functions-host/issues/7618
  3. SO Thread1

【讨论】:

  • 感谢详细的答案。解决方法不会改变任何东西。
  • 工作包都是最新的。并且配置设置如您所述。删除 WEBSITE_NODE_DEFAULT_VERSION 也没有改变任何东西。
  • @DerDani81 如果有任何更新可用,您是否尝试更新函数应用中的工作程序包版本并重新部署它。
  • 在删除website_node_default_version设置后,能否请您尝试将功能重新发布到天蓝色并检查?
  • 重新部署后没有任何变化。
猜你喜欢
  • 2022-07-26
  • 2022-08-09
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多