【问题标题】:asp.net core 5 web api swagger does not give application/xml optionsasp.net core 5 web api swagger 不提供应用程序/xml 选项
【发布时间】:2021-03-31 16:44:52
【问题描述】:

我已将 xml 序列化程序格式化程序添加到我的 Web api:

public void ConfigureServices(IServiceCollection services)
{   
    services.AddControllers()
        .AddXmlSerializerFormatters()
        .AddJsonOptions(o =>
        {
            o.JsonSerializerOptions.PropertyNamingPolicy = null;
            o.JsonSerializerOptions.Converters.Add(new System.Text.Json.Serialization.JsonStringEnumConverter());
        });

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = $"Test", Version = "v1" });
    });
}

我的控制器如下所示:

[ApiController]
[Route("[controller]")]
public class Evaluate : ControllerBase
{
    private readonly ILogger<Evaluate> _logger;

    public Evaluate(ILogger<Evaluate> logger)
    {
        _logger = logger;
    }

    [HttpPost]
    public ActionResult<MyResponse> Post(MyRequest request)
    {
        ...
    }
}

当我浏览到 swagger 页面时,我只获得 text/plain、application/json 和 text/json 作为请求/响应格式的选项。我尝试使用 [Serializeable] 和 [DataContract]/[DataMember] 属性装饰 MyResponse 和 MyRequest 类,但没有任何变化。

我如何大摇大摆地认识到我已经添加了 Xml 序列化程序?

【问题讨论】:

  • 嗨@Jeremy,我只是在我的asp.net core 5项目中添加.AddXmlSerializerFormatters(),swagger将包含text/xmlapplication/xml等请求/响应格式的选项。请尝试创建一个新项目并检查它是否有效。

标签: asp.net-core .net-core swagger swagger-ui


【解决方案1】:

我想通了。我注意到事件日志中有一个错误,说我的模型中有一些东西不能被 XmlSerializer 序列化。该模型有一个 IEnumerable 属性。当 XmlSerializer 无法序列化/反序列化模型时,swagger ui 只是省略了 xml 选项。

【讨论】:

    猜你喜欢
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2023-02-07
    • 2020-03-07
    相关资源
    最近更新 更多