Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将nlog添加到.net core 3.0_C#_Asp.net Core Mvc_Nuget_Nlog - Fatal编程技术网

C# 将nlog添加到.net core 3.0

C# 将nlog添加到.net core 3.0,c#,asp.net-core-mvc,nuget,nlog,C#,Asp.net Core Mvc,Nuget,Nlog,将nlog添加到.net core 3.0应用程序会导致 “IServiceCollection”不包含的定义 “ConfigureLoggerService”且没有可访问的扩展方法 “ConfigureLoggerService”接受类型为的第一个参数 如果缺少using指令,则无法找到“IServiceCollection” 还是程序集引用 为了努吉,我有 NLog.Extensions.Logging v1.6.1 NLog.Web.AspNetCore v4.9.0 在startup.

将nlog添加到.net core 3.0应用程序会导致

“IServiceCollection”不包含的定义 “ConfigureLoggerService”且没有可访问的扩展方法 “ConfigureLoggerService”接受类型为的第一个参数 如果缺少using指令,则无法找到“IServiceCollection” 还是程序集引用

为了努吉,我有

NLog.Extensions.Logging v1.6.1
NLog.Web.AspNetCore v4.9.0
在startup.cs中

 public Startup(IConfiguration config)
        {
            LogManager.LoadConfiguration(String.Concat(Directory.GetCurrentDirectory(), "/nlog.config"));
            Configuration = config;
        }

public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthentication(IISDefaults.AuthenticationScheme);
            services.AddMvc();
            services.AddTransient<ICwopaAgencyFileRepository, CwopaAgencyFileRepository>();
            services.AddTransient<ICurrentUserRepository, CurrentUserRepository>();
            services.AddTransient<IUserRepository, UserRepository>();
            services.AddTransient<IRevenueReceivedRepository, RevenueReceivedRepository>();
            services.AddTransient<ILesseeRepository, LesseeRepository>();
            services.AddTransient<ITractLesseeJunctionRepository, TractLesseeJunctionRepository>();
            services.AddTransient<IPadRepository, PadRepository>();
            services.AddTransient<IWellRepository, WellRepository>();
            services.AddTransient<IWellOperarationRepository, WellOperationRepository>();
            services.AddTransient<IRoyaltyRepository, RoyaltyRepository>();
            services.AddTransient<IRoyaltyAdjustmentCardViewModelRepository, RoyaltyAdjustmentCardViewModelRepository>();
            services.AddSingleton<ILoggerManager, LoggerService>();
            string conString = Configuration["ConnectionStrings:DefaultConnection"];
            services.AddDbContext<DataContext>(options =>
                options.UseSqlServer(conString));
            services.ConfigureLoggerService();
            services.AddMvc(option => option.EnableEndpointRouting = false);
            services.AddMemoryCache();
            services.AddSession();
        }
这是我的csproj文件

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

  <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
  </PropertyGroup>

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.0.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" />
    <PackageReference Include="NLog" Version="4.6.8" />
    <PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" />
    <PackageReference Include="NLog.Web.AspNetCore" Version="4.9.0" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Migrations\" />
  </ItemGroup>

</Project>
如果您遵循这一点,请不要忘记添加此方法扩展

public static void ConfigureLoggerService(this IServiceCollection services)
{
    services.AddSingleton<ILoggerManager, LoggerManager>();
}
另外,您可以考虑删除它,因为您正在向接口ILoggerManager注册此服务LoggerService。

如果您遵循此操作,请不要忘记添加此方法扩展

public static void ConfigureLoggerService(this IServiceCollection services)
{
    services.AddSingleton<ILoggerManager, LoggerManager>();
}

另外,您可以考虑删除它,因为您正在向接口ILogerManager注册此服务LoggerService。

是否包含正确的名称空间?是否有主NLog包?它是NLog.Extensions.Logging的一部分,但他们的说明是关于NLog包的。请共享您的csproj文件刚安装了它,但它没有帮助我包括我的csproj文件配置LoggerService不是NLog提供的方法。认为你使用的是一些破损的教程。试试看这里:您是否包含了正确的名称空间?是否有一个主NLog包?它是NLog.Extensions.Logging的一部分,但他们的说明是关于NLog包的。请共享您的csproj文件刚安装了它,但它没有帮助我包括我的csproj文件配置LoggerService不是NLog提供的方法。认为你使用的是一些破损的教程。改为试试看这里:我删除了it服务。ConfigureLoggerServices,它记录得很好。谢谢。我删除了it services.ConfigureLoggerServices,它记录的很好。谢谢