簡體   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