Azure功能无法绑定ILogger

RA.*_*RA. 19 azure azure-functions azure-functions-runtime

我的函数是引用一个引用Microsoft.Extensions.Logging.Abstractions 2.0.0的程序集.如果我将该版本的nuget引用添加到函数的程序集中,则函数执行将失败:

[1/25/2018 11:14:46 PM] Microsoft.Azure.WebJobs.Host:错误索引方法'TrainingFunction.Run'.Microsoft.Azure.WebJobs.Host:无法将参数'log'绑定到类型ILogger.确保绑定支持参数Type.如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等).

是否可以在Azure功能中使用较新的记录器?(SDK 1.0.7)

Mik*_*e S 18

可能发生的是SDK绑定到ILogger程序集的X版本,并且您的用户代码绑定到版本Y.然后绑定引擎不会将您的参数类型识别为相同,因为它们来自不同的程序集.(这也可能发生在任何其他类型).

通常修复是:

  1. 请参阅SDK使用的块参考
  2. 使用这些现有引用,不要使用不同的版本添加相同的dll.

  • 谢谢.问题是我在使用1.1.1时尝试使用Logging.Abstractions v2.0.0.0 (3认同)
  • 就我而言,我需要将“Microsoft.Extensions.Logging.Abstractions”从“3.1.0”降级到“2.2.0” (2认同)
  • 如果我在 Azure 函数依赖的另一个程序集中使用“Microsoft.Extensions.Logging”“5.0.0”,我会遇到 OP 的问题。但是,如果我在另一个程序集中降级到“3.1.12”,那么一切都会很好。相当不透明。由于这个问题浪费了相当多的时间。 (2认同)

Bat*_*atu 7

我在某种程度上也有同样的错误,但它是Microsoft.EntityFrameworkCore.SqlServer的包版本导致问题的原因.

将Microsoft.EntityFrameworkCore.SqlServer v2.2.0降级到v2.1.4就可以了.

我假设此包的logging.abstractions库之间存在版本不匹配.