我有一个简单的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中的所有控制器。
我用谷歌搜索但没有找到任何有价值的东西。请指教。答案 0 :(得分:2)
如果您共享摇摇欲坠的配置,则解决此问题将更加容易。
尝试将其添加到您的敏捷配置:
options.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());