【问题标题】:Azure function returns error-No job function foundAzure 函数返回错误 - 未找到作业函数
【发布时间】:2020-09-14 15:33:12
【问题描述】:

我们正在尝试使用 azure 函数应用程序调用 azure 认知服务 - 翻译器 api。我们在 c# 终端中收到以下错误:

未找到工作职能。尝试制作你的工作类别和方法 上市。如果您使用绑定扩展(例如 Azure 存储, ServiceBus、Timers 等)确保你已经调用了注册 启动代码中扩展的方法(例如 builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() 等)。

我们的 C# 代码供参考:

 private const string key=" ";
                private static readonly HttpClient client=new HttpClient
                {
                   DefaultRequestHeaders={{"Ocp-Apim-Subscription-key",key}}
                };
                public static async Task Main()
                {
                    while(true){
                        var text=Console.ReadLine();
                        var translatedText=await Translate(text,"en");
                        Console.WriteLine(translatedText);
                    }
                }
                public static async Task<string> Translate(string text,string language){

                    var encodedText=WebUtility.UrlEncode(text);
                    var uri="https://api.microsofttranslator.com/V2/Http.svc/Translate?" + $"to={language}&text={encodedText}";
                    var result=await client.GetStringAsync(uri);
                    return XElement.Parse(result).Value;
                }

还有.csproj文件代码供参考:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
    <RootNamespace>transaltor_cognetive_service</RootNamespace>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.7" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.7" >
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
  <PropertyGroup>
   <LangVersion>7.1</LangVersion>
</PropertyGroup>
</Project>

【问题讨论】:

  • “使用 Azure 功能应用”是什么意思?您发布的代码不是 Azure 函数。我们需要有关您尝试执行的操作的更多详细信息。
  • 我们在visual studio代码中配置了azure,通过使用azure函数,我们创建了这个项目
  • 请看下面@ri​​ckvdbosch 的回答。您的代码缺少属性,这就是函数运行时找不到您的函数的原因。您能否更明确地说明您创建项目所采取的步骤?您是否使用任何 Azure Functions 模板来创建它?

标签: c# azure


【解决方案1】:

作为MarleneHE's comment的补充:

您缺少FunctionNameAttribute and a TriggerAttribute。没有这些,Functions Runtime 不知道哪个方法是入口点,也不知道如何触发它。

在类库中,函数是具有 FunctionName 和 trigger 属性的静态方法

FunctionName 属性将方法标记为函数入口点。该名称在项目中必须是唯一的,以字母开头,并且只能包含字母、数字、_ 和 -,长度最多为 127 个字符。项目模板通常会创建一个名为 Run 的方法,但方法名称可以是任何有效的 C# 方法名称。

触发器属性指定触发器类型并将输入数据绑定到方法参数。

【讨论】:

    猜你喜欢
    • 2020-05-29
    • 2021-05-04
    • 2019-12-31
    • 2019-10-14
    • 2020-03-24
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多