如何限制参数绑定的字符集?

How to restrict character set for parameter binding?

我处于这样一种情况,我必须将 Web 服务的路由值、查询参数和 json 正文内容的字符集限制为 latin1。

我玩过内容谈判器,但那个只是用于响应格式化。

我已经尝试将媒体格式化程序中支持的编码替换为引发意外字符的编码,但是例如,当 JsonMediaTypeFormatter 执行其 ReadFromStream 调用时,effectiveEncoding 参数已经是 latin1 并且该字符串已经是乱码(我正在尝试使用一些中文字符)。

我真正想要的是在指定错误编码或出现非 latin1 字符时创建一些 BadRequest 结果。

任何人都可以提示我在哪里寻找正确的地方来解决这个问题吗?我敢肯定肯定有比在 DelegatingHandler 中完成所有操作更好的方法 "manually"。

最后,我只是将媒体格式化程序替换为在反序列化为对象之前使用 Encoding.GetBytes(...) 验证字符串的格式化程序。