gpt4 book ai didi

c# - 无法加载 API 定义

转载 作者:太空狗 更新时间:2023-10-29 19:44:52 24 4
gpt4 key购买 nike

我有一个简单的 ASP.NET Core API,其中我有一个 Controller ,该 Controller 应该使用 HttpRequestMessage 的输入参数。我尝试了标准格式化程序,但它们不起作用:

  services.AddMvc(options =>
{

options.RespectBrowserAcceptHeader = true;

options.InputFormatters.Add(new XmlSerializerInputFormatter());
options.OutputFormatters.Add(new XmlSerializerOutputFormatter());

}

还尝试了这个格式化程序:

XmlDataContractSerializerOutputFormatter

它也没有用。因此,我最终得到了一个自定义格式化程序:

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();
}
}
}
}

因此必须将输入参数类型从 HttpRequestMessage 更改为 [FromBody]string

而且我能够在这个更改之后读取输入的 xml。

但是

现在,当我启动 API(并且我使用 Swagger)时,Swagger 的屏幕包含错误消息:无法加载 API 定义

它适用于我拥有的 API 中的所有 Controller 。

我用谷歌搜索但没有找到任何有值(value)的东西。请指教。

最佳答案

如果您能分享您的 swagger 配置,解决这个问题会更容易。

尝试将此添加到您的 swagger 配置中:

options.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());

关于c# - 无法加载 API 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49733697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com