我正在尝试创建一个持久函数,因此我有一个带有serviceBusTrigger的函数,一个带有orchestrationTrigger的函数,以及一个带有activityTrigger的函数。在注册触发器绑定方面,我做错了。
在本地运行时,出现以下错误:
未找到工作功能。尝试制定工作类别和方法 上市。如果您使用的是绑定扩展(例如Azure存储, ServiceBus,Timer等),以确保您已致电注册 启动代码中扩展名的方法(例如 build.AddAzureStorage(),build.AddServiceBus(),builder.AddTimers(), 等)。
以下3个功能有误:
:绑定类型'serviceBusTrigger'未注册。请确保类型 是正确的,并且已安装绑定扩展。
: 绑定类型“ orchestrationTrigger”未注册。请 确保类型正确并已安装绑定扩展。
:绑定类型'activityTrigger'不是 注册。请确保类型正确且具有约束力 扩展程序已安装。
在.net核心功能中,据我了解,没有启动文件可以明确地在代码中注册绑定。相反,我刚刚安装了与每种触发器类型相对应的nuget软件包。
例如参考,这是我的serviceBusTrigger函数:
[FunctionName("Function_HttpStart")]
public static async Task Run(
[ServiceBusTrigger("my-queuename", Connection = "ConnectionString")] RequestObject request,
[OrchestrationClient]DurableOrchestrationClient starter,
ILogger log)
{
var instanceId = await starter.StartNewAsync("OtherFunction", request);
log.LogInformation($"Started orchestration with ID = '{instanceId}'.");
}
和生成的function.json文件:
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.24",
"configurationSource": "attributes",
"bindings": [
{
"type": "serviceBusTrigger",
"connection": "ConnectionString",
"queueName": "my-queueName",
"name": "request"
}
],
"disabled": false,
"scriptFile": "../bin/x.dll",
"entryPoint": "Namespace.Project.Run"
}
答案 0 :(得分:1)
请确保我们没有单独安装软件包Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator
。这是Microsoft.NET.Sdk.Functions
引用的软件包,显式安装会导致[FunctionProject]\bin\Debug\netcoreapp2.1\bin\extensions.json
文件(包含绑定扩展名信息)无法生成。
项目文件(右键单击项目Edit [FunctionProject].csproj
)应如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="1.7.1" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="3.0.2" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
答案 1 :(得分:1)
对于我来说,安装名为:
的软件包 Microsoft.Azure.Webjobs.Extensions.ServiceBus
代替:
Microsoft.Azure.Webjobs.ServiceBus
...帮助解决了问题。