繁体   English   中英

“Microsoft.AspNetCore.Mvc.MvcCoreLoggerExtensions”的类型初始值设定项引发异常。

[英]The type initializer for 'Microsoft.AspNetCore.Mvc.MvcCoreLoggerExtensions' threw an exception.'

我正在制作一个 .NET Core 应用程序,我想启动一个应用程序,但它在这行代码中说:

app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapRazorPages();
            });
//...

它说这个错误:

System.TypeInitializationException: 'Microsoft.AspNetCore.Mvc.MvcCoreLoggerExtensions' 的类型初始值设定项引发异常。

这是新事物,我以前在启动应用程序时从未见过。 我该如何解决?

内部异常是:

方法未找到:'System.Action`4<Microsoft.Extensions.Logging.ILogger,!!0,!!1,System.Exception> Microsoft.Extensions.Logging.LoggerMessage.Define(Microsoft.Extensions.Logging.LogLevel, Microsoft .Extensions.Logging.EventId, System.String, Boolean)'。

主文件

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

.NET Core 6.0 是最新版本

身份包含在应用程序中。

好吧,当我尝试添加包 Microsoft.Extensions.Logging 时,它说 .NET Core 6.0 是不受支持的版本。

我从 VS 2022 Preview 和 .NET CORE 6 Preview 转移到 VS 2019 和 .NET Core 5,现在一切正常。

所以这是新预览版本之间的冲突(或者可能是新的微软错误?):D。

我遇到了同样的问题,但没有从 .NET CORE 6 Preview 切换的选项。

这是我的 csproj:

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

  <PropertyGroup>
    <Description>Application description goes here</Description>
    <!-- NuGet Version Number (no pre-release identifiers)-->
    <VersionPrefix>1.0.0</VersionPrefix>
    <Authors>Your name here</Authors>
    <TargetFramework>net6.0</TargetFramework>
    <PackageProjectUrl>--redacted--</PackageProjectUrl>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <!-- Should be major.minor.0.0-->
    <AssemblyVersion>1.0.0.0</AssemblyVersion>
    <!-- Should be major.minor.version.0-->
    <FileVersion>1.0.0.0</FileVersion>
    <TypeScriptToolsVersion>3.3</TypeScriptToolsVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="10.1.1" />
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
    <PackageReference Include="BuildBundlerMinifier" Version="3.2.449" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.0-preview.7.21378.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.0-preview.7.21378.4" />
    <PackageReference Include="Microsoft.jQuery.Unobtrusive.Ajax" Version="3.2.6" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.2.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.0-preview.7.21413.1" />
    <PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="2.1.113" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
  </ItemGroup>

  <ItemGroup>
    <Content Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

  <ItemGroup>
    <Folder Include="wwwroot\lib\" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\MyProject.Data\\MyProject.Data.csproj" />
    <ProjectReference Include="..\\MyProject.Services\\MyProject.Services.csproj" />
  </ItemGroup>
</Project>

您需要更新Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

面临同样的问题,在 VS2022 中使用 razor 模板项目创建的 MVC Proj 使用的是6.0.0-preview.5.21301.17所以我将包更新为6.0.0-preview.7.21378.6

在此处输入图片说明

我遇到了同样的问题。 为了实验,我创建了一个新项目,并在其中添加了最新版本的 Microsoft.Extensions.Logging(目前为 6.0.0-preview.7.21377.19)。 该项目因与您相同的错误而崩溃。 问题在于 LoggerMessage.Define 中没有四参数重载。 将软件包降级到 6.0.0-preview.6.21352.12 版对我有帮助。

当我尝试将 Blazor WASM Asp.net 托管项目从 5.0 升级到 6.0.0 时出现完全相同的错误。 我正在使用 Serilog,但不确定这是否是一个因素。

我对 .net 6 和 5.0.12 的 Microsoft.AspCore 库都没有问题。 如果我更新到 6.0.0 我有这个问题。 我继续开发,并在尝试集成 Auth0 时遇到了同样的问题。 我解决此异常的唯一解决方案是将整个应用程序降级到 .net 5.0。 库在 5.0.12 保持不变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM