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

时间:2017-09-28 13:35:54

标签: c# azure azure-functions azure-webjobs

将我自己的项目从早期(几个月前)版本的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。

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

1 个答案:

答案 0 :(得分:3)

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

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

<ItemGroup>           
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.4" />
</ItemGroup>