C# Swagger(.Net Core)中的XML支持?

C# Swagger(.Net Core)中的XML支持?,c#,asp.net-core,swagger,swagger-ui,C#,Asp.net Core,Swagger,Swagger Ui,我有一个我们在工作中都使用的Asp.net核心招摇过市框架。它只是用招摇来包装所有的皮塔。它被设计为json in/json out。现在有一个小组只想将它与XML in/XML out一起使用 以下是我迄今为止所做的工作: 1) 将startup.cs更改为: services.AddMvc().AddXmlSerializerFormatters() 2) 在控制器方法上,更改为: [Consumes("application/xml")] [Produces("applic

我有一个我们在工作中都使用的Asp.net核心招摇过市框架。它只是用招摇来包装所有的皮塔。它被设计为json in/json out。现在有一个小组只想将它与XML in/XML out一起使用

以下是我迄今为止所做的工作:

1) 将startup.cs更改为:

services.AddMvc().AddXmlSerializerFormatters()

2) 在控制器方法上,更改为:

    [Consumes("application/xml")]
    [Produces("application/xml")]
3) 在操作筛选器中,添加了:

operation.Produces.Add("application/xml");
现在,在测试UI中,我只获得输入和输出下拉列表的application/xml。当我点击test按钮时,我的请求得到了正确的反序列化,但是test页面产生了406错误


我还需要更改哪些内容?

客户端需要发送一个包含
应用程序/xml
接受
标题。您已将
application/xml
设置为唯一可能的响应类型,如果客户端请求类似
application/json
的内容,服务器将无法再满足该请求。

我指的是内置的招摇过市测试页面中的测试ui。这就是我看到406错误的地方。请求的xml格式很好。是的,因为请求的
内容类型
头作为
application/xml
发送。但是,这与所发送的
接受
头没有关系,这就是服务器响应的类型。如果
application/xml
不存在于该标头中(显然不存在),则服务器无法响应请求,因为它现在只能返回
application/xml
。这就是内容协商的工作原理。好的,我查看了swagger测试页面正在发送的内容及其发送:curl-X POST--header'content-Type:application/xml'--header'Accept:application/xml'-d',所以它已经有了Accept头了。似乎响应仍然以json的形式返回。我在fiddler中尝试了接受application/xml和接受application/json,但都不起作用。两者都获得HTTP406。