无法加载API定义

时间:2018-04-09 13:04:59

标签: c# swagger asp.net-core-2.0 swagger-ui

我有一个简单的ASP.NET核心API,我有一个控制器,它应该使用HttpRequestMessage的输入参数。 我尝试过标准格式化程序,但它们不起作用:

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

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

template <int dimen, int neighbours, typenameDATATYPE >
class Grid {
  public:
    get_solidify_cells(const int &pos)
  private:
    std::vector<MacroCell<dimen, neighbours, DATATYPE>> macrogrid;
};

int Grid<dimen, neighbours, DATATYPE>::get_solidify_cells(const int &pos) {
    const MacroCell<dimen, neighbours, DATATYPE> cell = macrogrid[pos];
    const auto cell1 = macrogrid[pos];
    const auto cell2 = cell;
    return cell.get_solidify_cells();
}

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

我可以在这次更改后读取输入xml。

BUT

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

它适用于我所拥有的API中的所有控制器。

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

1 个答案:

答案 0 :(得分:2)

如果您共享摇摇欲坠的配置,则解决此问题将更加容易。

尝试将其添加到您的敏捷配置:

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