错误500为UTF32,而不是为MVC中的UTF8
本文关键字:MVC 中的 UTF8 UTF32 错误 | 更新日期: 2023-09-27 18:18:31
在我的MVC web应用程序中,我通过WebClient调用POST到特定的控制器。我需要这个电话是UTF32格式的。然而,每当我用UTF32这样做时,它就不起作用了。它返回一个错误500。当我切换到UTF8时,它工作得很好。
这是我的UTF32代码:
var name = SettingsManager.GetScopeAttribute("[Map.Options]", "Name");
using (var client = new WebClient())
{
//client.Encoding = Encoding.UTF8;
client.Headers.Add("Content-Type",
"application/x-www-form-urlencoded; charset=utf-32");
client.UploadData(url, Encoding.UTF32.GetBytes("facebookID="
+ IngamableCommunicator.FacebookProfileID
+ "&name="
+ name
+ "&content="
+ File.ReadAllText(mapPath)));
}
服务器报告此问题:
参数字典包含一个非空类型'System '的参数'facebookID'的空条目。Int32' for method 'System. web . mvc . actionresult SubmitMap(Int32, System. web . mvc . actionresult)'在'FlamefusionEntertainment.Areas.Scavenius.Controllers.MapCloudController'。可选形参必须是引用类型、可空类型,或者声明为可选形参。
我与UTF8的问题是,当数据实际通过,因为我有字符(不可见的空格等)是特殊的,它出错时,通过实体框架保存在Microsoft SQL数据库。
我检索的数据在某种程度上是畸形的。没有换行符,没有空格,等等。
我发现这是因为MVC显然不支持UTF32请求。正如Damien所指出的,就内容而言,UTF32和UTF8之间没有区别。因此,当我切换到UTF8时,一切都工作了。
我发现这是因为我正在使用HttpUtility类的UrlEncode函数来编码表单数据变量。相反,我应该使用UrlEncodeUnicode函数。