【问题标题】:Adding XmlSerialser to WebApi in .NET Core 2.2 does not work在 .NET Core 2.2 中将 XmlSerializer 添加到 Web Api 不起作用
【发布时间】:2020-02-27 12:17:05
【问题描述】:

我想为我的 WebAPI (ASP .NET Core) 添加使用 XML 格式的可能性。我根据 MSDN (https://docs.microsoft.com/en-us/aspnet/core/web-api/advanced/formatting?view=aspnetcore-2.2) 上的文档进行了配置,但不幸的是,它不适用于我的情况。在细节上,我实际上做了两件事。我添加了一个 NuGet 包 Mircrosoft.AspNetCore.Mvc.Formatters.XML 并且我还在 ConfigureServiceMethod 中添加了以下行

    services.AddMvc()
             .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
             .AddXmlSerializerFormatters();

在此之后,当我运行应用程序时,我收到以下错误

    System.IO.FileNotFoundException: 'Could not load file or assembly 'C:\project_name\bin\Debug\netcoreapp2.2\Microsoft.AspNetCore.Mvc.Formatters.Xml.XmlSerializers.dll'. The system cannot find the file specified.'

如您所见,方法 AddXmlSerializerFormatters() 需要 Microsoft.AspNetCore.Mvc.Formatters.Xml.XmlSerializers.dll 但内部安装的 NuGet 只是 Microsoft.AspNetCore.Mvc.Formatters.Xml.dll 应该没问题,因为在每个文档中都写到使用此方法需要此 dll。你知道如何解决这个问题吗?我在 Internet 上没有找到任何关于异常中有关此 dll 的信息。

下面是我的 .csproj 文件

<Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
        <RootNamespace>NameOdProjec.WebApi</RootNamespace>
        <GenerateDocumentationFile>true</GenerateDocumentationFile>
      </PropertyGroup>

      <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
        <OutputPath>..\..\..\bin\Debug\</OutputPath>
      </PropertyGroup>

      <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.App" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.2.0" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Version="2.2.0" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="4.0.0" />
        <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
        <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" />
        <PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0" />
      </ItemGroup>

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

【问题讨论】:

  • 你是如何添加它的?你添加包了吗?你的 csproj 是什么样子的?
  • 这是一个默认的 .NET Core 2.2 WebAPI 项目。我使用 NuGet 包管理器添加了 NuGet。
  • 我现在将 .csproj 添加到我的问题中。
  • 你的项目是asp.net core 2.2,为什么加.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)而不是.SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
  • 另外,你在哪一行犯了这样的错误?当我将你的包引用添加到我的项目时。它无法重现像你这样的问题。

标签: .net asp.net-core serialization webapi media-type


【解决方案1】:

我的解决方案文件有问题。当我将所有项目转移到不同的解决方案时,突然一切都开始工作了:O

【讨论】:

    猜你喜欢
    • 2021-05-25
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多