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

wpf*_*abe 7 c# azure azure-webjobs azure-functions

将我自己的项目从早期(几个月前)版本的Azure功能升级到当前版本后,从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)
Run Code Online (Sandbox Code Playgroud)

我没有尝试将其部署到Azure.

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

Mik*_*kov 3

Microsoft.Extensions.Logging.Abstractions是正确的装配。

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

<ItemGroup>           
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.4" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)