【问题标题】:Error loading Serilog from IConfiguration in Azure Function从 Azure 函数中的 IConfiguration 加载 Serilog 时出错
【发布时间】:2021-11-26 18:10:14
【问题描述】:

尝试从 Azure 函数中的 IConfiguration 设置 Serilog 时出现以下错误。

无法加载文件或程序集“Microsoft.Extensions.DependencyModel,Version=3.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。系统找不到指定的文件。

运行时抛出的错误就行了:

var loggerConfiguration = new LoggerConfiguration().ReadFrom.Configuration(Configuration);

我的 Startup 类如下所示:

public class Startup : FunctionsStartup
{
    public IConfiguration Configuration { get; set; }

    public override void Configure(IFunctionsHostBuilder builder)
    {
        Configuration = builder.GetContext().Configuration;

        (...)

        var loggerConfiguration = new LoggerConfiguration().ReadFrom.Configuration(Configuration);

        var logger = loggerConfiguration.CreateLogger();
        builder.Services.AddLogging(lb => lb.AddSerilog(logger));
    }
}

我可以在我的项目的依赖项中看到 Microsoft.Extensions.DependencyModel(3.0.0) 依赖项,作为 Serilog.Settings.Configuration(3.3.0) 的子依赖项。

我可以对 Serilog 配置进行硬编码,并使其与 MSSqlServer 接收器一起工作,但重点是通过简单的设置更改来进行配置。

我正在使用 .net6 和 azure 函数 v4。

编辑:添加 .csproj 示例

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="5.1.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.0.1" />
    <PackageReference Include="Serilog.Settings.Configuration" Version="3.3.0" />
    <PackageReference Include="Serilog.Sinks.MSSqlServer" Version="5.6.1" />
  </ItemGroup>
(...)

Startup.cs 中的使用:

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Serilog;
using System.Reflection;
using Microsoft.Extensions.Logging;
(...)
Other project references and company libs
(...)

【问题讨论】:

  • 您能否分享.csproj 代码以查看依赖项、安装的包版本以及在using system 等函数类中使用的命名空间?
  • @HariKrishnaRajoli-MT 在问题中添加了信息。
  • 我有完全相同的情况和完全相同的问题...有人找到解决方案了吗?这真的很奇怪,因为所有内容都与可以找到的大多数文档相匹配。

标签: c# azure-functions serilog .net-6.0


【解决方案1】:

我遇到了这个问题,发现如果我保持 Microsoft.NET.Sdk.Functions 对 3.0.03 的依赖,它可以正常工作,即使使用 .net6 和 Azure Functions V4。

&lt;PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.03" /&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多