如何在ASP.NET Boilerplate(ASP.NET Core)中更改App Services的响应格式?

时间:2019-05-29 09:11:26

标签: asp.net-core aspnetboilerplate

我想将应用程序服务的响应内容类型从application/json更改为application/xml。我遇到的一种解决方案是this,但没有说明如何配置和使用Xml Formatter。谁能解释一下如何为此包(即Microsoft.AspNetCore.Mvc.Formatters.Xml)配置ABP。简单安装此软件包并使用startup.cs配置services.AddMvc().AddXmlSerializerFormatters()文件是行不通的。我认为必须配置ApplicationCoreModule。顺便说一句,我的应用程序服务正在返回对象列表。

这是我在Swagger中执行API时结果的图像:

Request Image

Response Image

1 个答案:

答案 0 :(得分:0)

更新

尝试使用this suggested solution配置模块:

Configuration.Modules.AbpWebApi().HttpConfiguration.Formatters.Add(new XmlMediaTypeFormatter()
{
    UseXmlSerializer = true;
});

TL; DR(关于下面的原始答案):

使用ASP.NET Core创建Web服务时,不使用ASP.NET Boilerplate时,以下信息会有所帮助。我不熟悉这项技术,也没有意识到您正在使用它。

原始答案

如果在RespectBrowserAcceptHeader = true文件中添加Startup.cs MVC服务选项,它应该会按预期工作(默认情况下为false)。

services.AddMvc(options =>
    {
        options.RespectBrowserAcceptHeader = true;
    })
    .AddXmlSerializerFormatters();

该选项的目的是使用客户端(see this source)指定的格式进行响应。

  • 因此,当您在curl请求中指定XML时,响应将被格式化为XML
  • 如果您在curl请求中指定JSON,则响应将被格式化为JSON(当您使用AddMvc中间件时,JSON是默认格式,因此如果curl中没有指定规范,则响应将为JSON。请求)