当前位置: 首页 > 知识库问答 >
问题:

Azure function 2.x ILogger与.net core ILogger不兼容吗?

令狐烨烨
2023-03-14

我一直在尝试将. net核心库项目引用到我的Azure函数项目中,以调用. net核心类库中定义的进程之一。

net核心库项目使用ILogger。

但是,每当我尝试运行一个函数时,我都会收到以下错误:

[2019/11/29 1:08:35 上午]“Function1”函数出错:Microsoft.Azure.WebJobs.Host:错误索引方法“Function1”。Microsoft.Azure.WebJobs.Host:无法绑定参数“log”以键入 ILogger'1。确保绑定支持参数 Type。如果使用的是绑定扩展(例如 Azure 存储、ServiceBus、计时器等),请确保已在启动代码(例如生成器)中调用了扩展的注册方法。AddAzureStorage(), builder.AddServiceBus(),

这是我的代码:

[FunctionName("Function1")]
        public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
            // string templateFile = Path.Combine(context.FunctionAppDirectory, "Data", "HelloHttpOutputTemplate.txt");
            Startup.Main(null).Wait();
        }

我还确认我的.net核心项目和函数项目引用了相同版本的ILogger:

'microsoft.extensions.logging.abstractions\3.0.0\lib\netStandard ard2.0'

如果我从function project中移除一个. net核心库项目引用,那么它就可以工作。

我的功能CS项目文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <Content Include="..\Accounts.Console\appsettings.json" Link="appsettings.json" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.28" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\Accounts.Console\Accounts.Console.csproj" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

我的. net核心库项目文件:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <StartupObject></StartupObject>
    <ApplicationIcon />
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="librdkafka.redist" Version="1.2.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Http" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Options" Version="3.0.0" />
  </ItemGroup>


  </Project>

共有1个答案

丌官绍元
2023-03-14

更新:

请使用<代码>。net core 3.0。

但仍然会遇到同样的错误:

这是我的. csproj文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="librdkafka.redist" Version="1.2.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Http" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Options" Version="3.0.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.28" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

解决方案

Microsoft.Extensions.HttpMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Logging.DebugMicrosoft.Extensions.Options的版本从3.0.0降级到2.2.0。然后错误将被解决。

原始答复:

我重复了你错误:

原因:

程序集冲突。关键是最后四个程序集引用。

解决方案:

将它们更改为2.2.0。在我这边工作正常。请在您这边试一试,如果您有困难请告诉我。

我的<代码>。csproj文件:

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <AzureFunctionsVersion>v2</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="librdkafka.redist" Version="1.2.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.0.0" />
    <PackageReference Include="Microsoft.Extensions.Http" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.2.0" />
    <PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.29" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>
 类似资料:
  • 问题内容: 我正在使用来自AJAX发布请求的回调来导航到新页面,但是在Internet Explorer上不起作用。我的代码如下: 这在FF / Safari / Chrome上正常运行,但是当我在IE上对其进行测试时,它不起作用。是否有更好的方法重定向到新页面?我正在使用,因为如果我不使用回调,则数据不会加载到Chrome / Safari上,因为在请求完成之前页面只会更改。 问题答案: 是括号

  • 我有一个关于JavaAPI中Akka 2.0.1的问题。我有以下情况: 参与者A:从UI接收请求。然后它将执行以下操作。 等待来自UI的消息 发送msg到Actor B,以检索数据 成为一个演员,当从演员B那里得到答案时,处理它。 演员B: 等待演员A的消息 检索数据 调用; 这不起作用,演员甲也不会得到答案。然而,如果Actor B在系统中使用全局actorRef到Actor A,在我的情况下z

  • 问题内容: 最近,我升级到了Snow Leopard,现在我无法运行使用wxPython构建的程序。我得到的错误是(从Eclipse + PyDev): 我不太了解它们,如果您能帮助我做到这一点,我将不胜感激。此外,如果您知道发生了什么情况,我该如何解决它们?也许这与Snow Leopard是64位的事实有关吗? 谢谢!! 问题答案: 问题是WxPython仅在Mac上以32位模式提供;但是,默认

  • 问题内容: Websphere v8.5.5开箱即用地支持JPA 2.0 。 我正在尝试将WAR部署到Websphere v8.5.5应用程序服务器。我的persistence.xml指定为JPA提供程序。 我还设置了JPA属性: 如本PDF演示文稿和本IBM主题中所述 我的应用程序设置为“ Parent Last”类加载策略,并且在WEB-INF / lib目录中包含以下JAR: hiberna

  • 在IntelliJ 202.2的最后更新后,我得到错误: 插件“Lombok”不兼容(直到build 201.SNAPSHOT) 我一直在寻找这个问题,但似乎我是唯一一个有这个IntelliJ版本问题的人。

  • 我刚在winforms应用程序中获取的内容 我的应用程序对web Api服务进行http调用,如下所示 没什么特别的,只要你安装了Newtonsoft。通过nuget的Json(V6.0.3) 突然,我在HttpResponseMessage代码行上出现了stackOverflow错误。移除Newtonsoft,问题就解决了。 问题是我是使用库序列化/反序列化数据在其他地方在我的窗体 我的解决方法

  • 我想在Gradle上的Android项目中集成以下库: 隆坡 使用AspectJ进行机器人绑定 匕首 为了将RoboBinding与AspectJ和android工具1.1结合使用。0我使用此修复程序编译了aspectj插件。 所有库都使用一些编译时注释处理。我发现Lombok与AspectJ不兼容。我注意到Robobind的注释处理器使用的是apt,而lombok只在提供的情况下工作(Dagge

  • 在我的pc上安装Java 9之后,只需运行一个示例Scala SBT项目,我就遇到了这个例外。我已经尝试了一些解决方案,但什么都没有找到。 Java9和Scala之间是否存在不兼容? Scala版本:2.12。3. Java版本:Java版本“9” IDE: IntelliJ 提前谢谢。 我试过了,但没有成功。