为了账号安全,请及时绑定邮箱和手机立即绑定

使给定操作接受给定内容类型的属性?

使给定操作接受给定内容类型的属性?

C#
慕姐4208626 2022-12-31 13:07:32
是否可以在 ASP.NET Core MVC 中仅更改某些操作以接受plain/text或application/xml(即content-type)使用属性而不更改默认输入格式化程序?
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

开箱即用的 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);

    }

}


查看完整回答
反对 回复 2022-12-31
  • 1 回答
  • 0 关注
  • 63 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信