Mur*_*oft 4 c# azure-webjobs azure-webjobssdk azure-functions azure-functions-runtime
首先,我查看了具有相同错误消息的其他SO帖子,但似乎没有一个可以解决我的问题。我尝试了许多排列和选项。我的函数构建良好,但无法在CLI中运行,我收到以下神秘错误。MSFT文档似乎也没有答案。
找不到工作职能。尝试公开您的工作类别和方法。如果您正在使用绑定扩展(例如ServiceBus,Timer等),请确保已在启动代码(例如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}");
}
Run Code Online (Sandbox Code Playgroud)
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"Eventhub": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "",
"evingest": "Endpoint=sb://example.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=LtcqBLT5VWjg0dGMdIvxCcEGs8902010Y6y14iGg="
}
}
Run Code Online (Sandbox Code Playgroud)
配套
function.json-缺少任何eventhub绑定!
{
"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"
}
Run Code Online (Sandbox Code Playgroud)
Tho*_*hom 49
如果您在 .NET 5 或更高版本中使用具有进程外执行模型的 Azure Functions,则需要将您的替换为FunctionName,Function否则将无法检测到该函数。
前:
[FunctionName("CreateData")]
Run Code Online (Sandbox Code Playgroud)
后:
[Function("CreateData")]
Run Code Online (Sandbox Code Playgroud)
Cel*_*dus 14
作为现有答案的补充:我们在从 .net 6 进程内模式升级到具有 dotnet 隔离模式的 .net 8 时遇到了这个问题。
因此,nugets 依赖关系从Microsoft.Azure.WebJobs.*(进程内绑定)更改为Microsoft.Azure.Functions.Worker(隔离绑定)。我们还重命名[FunctionName("MyFunction")]为[Function("MyFunction")].
所以在 中local.settings.json仍然FUNCTIONS_WORKER_RUNTIME是 的旧值dotnet,但正确的值必须是:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
Sup*_*pez 10
我的问题与其他答案不同:local.settings.json明确包含在.gitignore定义中。因此,该文件未包含在克隆中,并且本地构建无法理解哪个是要使用的正确运行时。
我从示例项目中提取了默认值local.settings.json来恢复文件。
我发现的另一个陷阱尤其是如果您要从另一个项目或版本进行转换。
在VS csproj文件中,确保存在AzureFunctionsVersion
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
...etc
Run Code Online (Sandbox Code Playgroud)
该工具会自动添加它,但是如果您要修改缺少的项目,则不会添加。希望这可以帮助您节省花费我3个小时的时间:-)。
您应该升级到最新的Microsoft.NET.Sdk.Functions(1.0.6截至今天)和Microsoft.Azure.WebJobs.Service.Bus(2.1.0-beta4如果在完整框架上运行)。您可能需要先删除 ServiceBus 引用才能升级 SDK。
Microsoft.Azure.Eventhubs还需要删除该包。所有相关类型等都在Microsoft.Azure.WebJobs.Service.Bus
还要记得在包管理器中检查“包括预发布”以找到2.1.0-beta4.
| 归档时间: |
|
| 查看次数: |
8721 次 |
| 最近记录: |