c# - ASP.NET MVC 覆盖字段的 POST 解析

标签 c# asp.net-mvc multipartform-data

我编写了一个 MVC 操作来接收来自服务的帖子。我的问题是该服务正在发布编码错误的多部分数据。

举个例子:

  • 该服务将为表单字段“text”发布“á”。
  • 我看到(使用 Wireshark)写入数据包的字节是 225,这是 ISO-8859-1 中“á”的正确字节。
  • 我执行 Request.Form["text"] 并且实际上得到了一个奇怪的(不同的)字符。

我认为这是由于 .NET 在使用 utf-8 编码转换为字符串时尝试将值 225 转换为 unicode char,但不能,因为 225 对 utf-8 无效。

所以我的问题是:有没有办法覆盖将这些字节解析为字符串的过程?

最佳答案

您可以尝试添加 HttpModule 并尝试覆盖 Request 对象的 ContentEncoding 属性。虽然我不确定这是否有效。

可以在 Web.Config 的 GlobalizationSection 中设置默认编码。该设置称为 RequestEncoding,仅当您的服务的 HTTP 请求不包含 ContentType header 时才会生效。参见 http://msdn.microsoft.com/en-us/library/system.web.configuration.globalizationsection.requestencoding.aspx

您可以进一步使用内部 Web.config 将上述设置仅设置为特定目录/MVC Controller 。

关于c# - ASP.NET MVC 覆盖字段的 POST 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11642240/

相关文章:

c# - 从 C# 应用程序内部存储空整数值

c# - ConfigurationManager.AppSettings 的作用是什么?

javascript - 将数据从其他网站内联 CSS 粘贴到 CK 编辑器中,在 Google Chrome 中丢失,但在 IE 和 Firefox 中不丢失

javascript - 是否可以在单个 JSON 消息中将一组图像二进制文件返回到浏览器?

express - MultipartParser.end() : stream ended unexpectedly

c# - 是否可以在针对 4.7.1 的 WinForms 项目中使用 Path.GetRelativePath (.NET Core2)?

jquery - jqGrid 的 LINQ 搜索中的可为 Null 值

c# - asp.net mvc 2.0如何让页面自动使用https

android客户端将多部分表单数据解析为非ascii

c# - PPT幻灯片转图片