将我自己的项目从早期(几个月前)版本的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文件可以查找以纠正这个问题。
答案 0 :(得分:3)
Microsoft.Extensions.Logging.Abstractions
是正确的程序集。
您可能直接引用一些较旧的NuGet包(例如Microsoft.Azure.WebJobs
)。如果是这样,请务必将其删除。除非您使用其他绑定,否则csproj
引用应该看起来像这样简单:
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.4" />
</ItemGroup>