Из коробки ASP.NET Core поддерживает только JSON или XML. Пока вы устанавливаете типы содержимого полезной нагрузки, она должна правильно десериализоваться независимо от действия контроллера.
Если вам нужна поддержка для любого другого типа контента (например, текст / обычный текст), вы можете создать пользовательский форматер
Пример, взятый непосредственно из образцов aspnet repo :
public class TextPlainInputFormatter : TextInputFormatter
{
public TextPlainInputFormatter()
{
SupportedMediaTypes.Add("text/plain");
SupportedEncodings.Add(UTF8EncodingWithoutBOM);
SupportedEncodings.Add(UTF16EncodingLittleEndian);
}
protected override bool CanReadType(Type type)
{
return type == typeof(string);
}
public override async Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context, Encoding encoding)
{
string data = null;
using (var streamReader = context.ReaderFactory(context.HttpContext.Request.Body, encoding))
{
data = await streamReader.ReadToEndAsync();
}
return InputFormatterResult.Success(data);
}
}