基于计时器的Azure功能会抱怨日志类型

时间:2018-05-18 09:07:43

标签: azure azure-functions

我遇到与this question

完全相同的问题

但没有一个答案有效,谷歌搜索了很长时间,我的版本更新等,但我仍然得到同样的错误

代码是示例模板

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;

namespace NWMPosNGPimFeeder
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, TraceWriter log)
        {
            log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
        }
    }
}

主机等的版本如下,包括实际错误

[21/5/2018 2:03:29 AM] Host has been specialized
Listening on http://localhost:7071/
Hit CTRL-C to exit...
[21/5/2018 2:03:29 AM] Reading host configuration file 'C:\Users\MattDouhan\source\repos\NWMPosNGPimFeeder\NWMPosNGPimFeeder\bin\Debug\net461\host.json'
[21/5/2018 2:03:29 AM] Host configuration file read:
[21/5/2018 2:03:29 AM] {
[21/5/2018 2:03:29 AM] }
[21/5/2018 2:03:30 AM] Loaded custom extension 'BotFrameworkConfiguration'
[21/5/2018 2:03:30 AM] Loaded custom extension 'SendGridConfiguration'
[21/5/2018 2:03:30 AM] Loaded custom extension 'EventGridExtensionConfig'
[21/5/2018 2:03:31 AM] Generating 1 job function(s)
[21/5/2018 2:03:31 AM] Starting Host (HostId=desktop7cks1do-1972353084, Version=1.0.11232.0, ProcessId=2668, Debug=False, Attempt=0)
[21/5/2018 2:03:31 AM] A ScriptHost error has occurred
[21/5/2018 2:03:31 AM] Microsoft.Azure.WebJobs.Host: Error indexing method 'Function1.Run'. Microsoft.Azure.WebJobs.Host: Cannot bind parameter 'log' to type TraceWriter. Make sure the parameter Type is supported by the binding. If you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. config.UseServiceBus(), config.UseTimers(), etc.).
[21/5/2018 2:03:31 AM] Error indexing method 'Function1.Run'

1 个答案:

答案 0 :(得分:1)

问题位于VS正在使用的旧函数cli。

  

版本= 1.0.11232.0

这意味着cli版本为1.0.4。这个旧版本确实会引起您的问题,但已经修复了新版本。

检查您的Azure Functions and Web Jobs Tools版本。

最新扩展15.0.40502.0,如果VS无法下载新版本cli,则会使VS使用cli 1.0.4。此下载过程在后台,似乎没有明确的警告。请参阅This GitHub issue

<强>解决方案

我建议您删除C:\Users\UserName\AppData\Local\AzureFunctionsTools文件夹并重新启动VS以重新下载。

当我们创建一个功能应用时,我们可以在Making sure all templates are up to date...

的对话框上看到提示

enter image description here

等一会儿,我们可以看到提示更改为

enter image description here

如果3米后没有变化(下载200M文件的时间),请检查C:\Users\UserName\AppData\Local\AzureFunctionsTools\Releases\1.0.12.1文件夹以查看它是否为空。如果它是空的,这意味着无法通过VS完成下载。我们必须手动完成。

您可以在C:\Users\UserName\AppData\Local\AzureFunctionsTools\feed.json找到cli,itemTemplates和projectTemplates的下载链接。

您可以参考1.0.10文件夹来构建类似的文件夹结构。