不接受Azurefunction(ILogger或TraceWriter)的上次日志记录参数

将我自己的项目从早期(几个月前)版本的Azure Functions升级到当前版本后,从VS启动时出现以下错误。

GetLoginUrl:Microsoft.Azure.WebJobs.Host:错误索引方法’Login.GetLoginUrl’。 Microsoft.Azure.WebJobs.Host:无法将参数’log’绑定到类型ILogger。 确保绑定支持参数Type。 如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等)。

之前,我曾经将TraceWriter log作为我方法的最后一个参数,但后来我发现我应该使用ILogger 。 在我做出改变之前,我得到了与上面相同的错误。

ILogger似乎映射到程序集Microsoft.Extensions.Logging.Abstractions 。 也许这就是为什么它不被认可? 应该使用哪种ILogger ? 这是方法签名。

  [FunctionName("GetLoginUrl")] public static HttpResponseMessage GetLoginUrl( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]HttpRequestMessage req, ILogger log) 

我没有尝试将此部署到Azure。

不幸的是,创建一个全新的Functions项目并没有帮助,因为没有.CS文件可以查找以纠正这个问题。

Microsoft.Extensions.Logging.Abstractions是正确的程序集。

您可能直接引用一些较旧的NuGet包(例如Microsoft.Azure.WebJobs )。 如果是这样,请务必将其删除。 除非您使用一些额外的绑定,否则您的csproj引用应该看起来像这样简单: