Joe*_*Doe 8 c# swagger swagger-ui asp.net-core-2.0
我有一个简单的ASP.NET核心API,我有一个控制器,它应该使用HttpRequestMessage的输入参数.我尝试了标准格式化程序,但它们不起作用:
services.AddMvc(options =>
{
options.RespectBrowserAcceptHeader = true;
options.InputFormatters.Add(new XmlSerializerInputFormatter());
options.OutputFormatters.Add(new XmlSerializerOutputFormatter());
}
Run Code Online (Sandbox Code Playgroud)
还试过这个格式化程序:
XmlDataContractSerializerOutputFormatter
Run Code Online (Sandbox Code Playgroud)
它也没有用.结果,我最终得到了一个自定义格式化程序:
public class RawInputFormatter : InputFormatter
{
public override Boolean CanRead(InputFormatterContext context)
{
return true;
}
public override async Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context)
{
if (context == null)
throw new ArgumentNullException(nameof(context));
var request = context.HttpContext.Request;
using (var reader = new StreamReader(request.Body))
{
try
{
var content = await reader.ReadToEndAsync();
return await InputFormatterResult.SuccessAsync(content);
}
catch
{
return await InputFormatterResult.FailureAsync();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此必须将输入参数类型从HttpRequestMessage更改为[FromBody]字符串
并且我能够在此更改后读取输入xml.
但
现在,当我启动API(并使用Swagger)时,Swagger的屏幕包含错误消息:无法加载API定义
它适用于我所拥有的API中的所有控制器.
我用谷歌搜索,但没有找到任何有价值的东西.请指教.
如果您共享您的 swagger 配置,那么解决此问题会更容易。
尝试将其添加到您的 swagger 配置中:
options.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2280 次 |
| 最近记录: |