21

首先,我查看了其他带有相同错误消息的 SO 帖子,但似乎没有一个可以解决我的问题。我尝试了许多排列和选项。我的函数构建良好,但不会在 CLI 中运行,我收到以下神秘错误。MSFT 文档似乎也没有答案。

未找到工作职能。尝试公开您的工作类别和方法。如果您正在使用绑定扩展(例如 ServiceBus、Timers 等),请确保您已在启动代码中调用了扩展的注册方法(例如 config.UseServiceBus()、config.UseTimers() 等.)。

我正在尝试运行计时器作业,然后将一组消息写入事件中心。我错过了什么?我已经为此奋斗了好几个小时。

功能:

    [FunctionName("CreateData")]
    public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer,
        [EventHub("murraytest", Connection = "evingest")] IAsyncCollector<string> myeventhub,
        TraceWriter log)
    {
        await myeventhub.AddAsync("data1");
        await myeventhub.AddAsync("data2");
        await myeventhub.AddAsync("data3");

        log.Info($"COMPLETED: {DateTime.Now}");
    }

local.settings.json:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "Eventhub": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "",
    "evingest": "Endpoint=sb://example.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=LtcqBLT5VWjg0dGMdIvxCcEGs8902010Y6y14iGg="

  }
}

套餐

努吉特

function.json - 缺少任何 eventthub 绑定!

{
  "generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
  "configurationSource": "attributes",
  "bindings": [
    {
      "type": "timerTrigger",
      "schedule": "0 */5 * * * *",
      "useMonitor": true,
      "runOnStartup": false,
      "name": "myTimer"
    }
  ],
  "disabled": false,
  "scriptFile": "..\\bin\\AzFuncs.dll",
  "entryPoint": "AzFuncs.Function1.Run"
}
4

15 回答 15

20

我发现的另一个问题,尤其是当您从另一个项目或版本转换时。

在 VS csproj 文件中,确保存在AzureFunctionsVersion

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
...etc

如果您正在修改缺少此功能的项目,该工具会自动添加此功能,但不会添加此功能。希望这可以帮助您节省花费我的 3 个小时 :-)。

于 2018-12-10T20:19:33.043 回答
14

如果您在 .NET 5 中使用带有进程外执行模型的 Azure Functions,则需要将您的替换FunctionNameFunction,否则将无法检测到该函数。

前:

[FunctionName("CreateData")]

后:

[Function("CreateData")]
于 2021-06-16T09:04:57.753 回答
5

您应该升级到最新版本Microsoft.NET.Sdk.Functions1.0.6截至今天)和Microsoft.Azure.WebJobs.Service.Bus2.1.0-beta4如果在完整框架上运行)。您可能需要先删除 ServiceBus 引用才能升级 SDK。

Microsoft.Azure.Eventhubs软件包也需要删除。所有相关类型等都在Microsoft.Azure.WebJobs.Service.Bus

还要记得检查包管理器中的“包含预发布”以找到2.1.0-beta4.

于 2017-12-06T20:54:22.593 回答
5

就我而言,我只是从实际的函数目录运行命令。您应该从函数项目的根目录运行它!

于 2021-01-04T14:09:25.677 回答
1

我的问题与其他答案不同:定义local.settings.json中明确包含了.gitignore。因此,在某一时刻,该文件已从文件夹中删除,而我的本地构建无法理解要使用的正确运行时。

local.settings.json我从示例项目中提取了默认值来检索文件。

于 2021-11-17T03:34:44.127 回答
1

就我而言,线索是控制台输出开头的这条消息:

Can't determine project language from files. Please use one of [--csharp, --javascript, --typescript, --java, --python, --powershell]

添加--csharp参数就可以了。

于 2021-12-03T12:42:59.190 回答
0

在我的情况下(net core 3.1 上的 v3)这是一个奇怪的情况,它以某种方式从 csproj 文件中删除。

<None Update="local.settings.json">
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  <CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
于 2021-09-14T08:03:32.040 回答
0

我从错误的文件夹运行“func start”。确保从 azure 函数的根文件夹运行它。这应该适用于任何语言(我正在使用 python)

于 2021-09-20T19:49:04.923 回答
0

我很欣赏这里的其他答案。但就我而言,他们都没有在VS Code上工作。

我仍在尝试使用 2.1 的 .NET 核心 SDK 版本,并且必须为我的 Azure 函数使用所有旧版本的依赖项。

即使一切看起来都正确,我仍然无法在本地运行该功能。事实证明,需要迈出一小步:

  1. 首先,发布你的项目dotnet publish

  2. 发表的东西应该在bin/Debug/netstandard2.0. 只需进入此文件夹并运行您的函数:

    cd bin/Debug/netstandard2.0  # I was using netstandard2.0 framework
    func start --build # You can add --verbose flag for more detailed outputs
    

瞧!而已。为了清楚起见,这是我的版本:

  • .NET 核心 SDK 版本:2.1.810
  • Azure CLI 版本:2.12.0
  • Azure 函数版本:v2
  • Microsoft.NET.Sdk.Functions:1.0.37
于 2020-09-30T21:48:58.790 回答
0

当我更改项目名称和其他一些重构时,它发生在我身上。更改后它正在那台机器上工作,但当我切换到另一台机器时,我得到了这个错误 - 即使它是相同的代码。

对我来说,解决方案基本上是创建一个随机的新天蓝色函数并再次运行。下次运行时,我的所有功能都出现在 cli 上。

于 2021-09-12T13:51:45.580 回答
-1

如果它从bin/Debug/netcoreapp3.1/etc 工作,这是因为您在根目录中缺少一些需要的文件或在某些文件中缺少部分。(例如:host.json)

我设法通过运行func init --force以恢复初始设置并使用 git 查找丢失的部分来解决此问题。

在此处输入图像描述

于 2020-11-10T10:11:06.987 回答
-1

如果您从 Visual Studio (F5) 调试/运行,即使使用最新的 Microsoft.NET.Sdk.Functions (v1.0.28),它也无法检测到项目中定义的 AzureFunctions。

我将问题归咎于项目属性>调试>工作目录默认情况下未以某种方式设置。将其设置为找到二进制文件的实际目录,并且您的 AzureFunctions 可用于调试。

PS,这将添加launchSettings.json /profiles/{projectName}/workingDirectory=/objd/amd64/

图片

于 2019-06-15T00:32:14.397 回答
-1

我得到了错误

未找到工作职能

当我的防火墙阻止 azure 函数程序连接到 Internet 时。

于 2022-01-20T19:07:01.227 回答
-1

在我的场景中,对于Existing Project,在 Windows 中安装 azure 函数设置后,我错过了在 .csproj 文件中提供参考

就这个

您可以在 VS Code Func init --force上运行命令并选择Dotnet 模板,然后删除自动创建的.csproj文件。

local.settings.json

"Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=false",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }

.csproj 文件

<ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
  </ItemGroup>  

如果您像我一样使用 Visual Studio 代码,我希望有人能提供帮助。

于 2021-02-12T08:44:49.890 回答
-2

出于某种原因,我的工作项目在 csproj 文件中复制了以下信息,因此在本地运行 AzFunction 时遇到了同样的错误。我删除了多余的线条,它工作得很好。

<ItemGroup>
    <None Include="Function1.cs" />
</ItemGroup>
于 2021-10-01T12:39:04.363 回答