C# MVC中的UTF32错误500,而不是UTF8错误500

C# MVC中的UTF32错误500,而不是UTF8错误500,c#,C#,在我的MVCWeb应用程序中,我通过WebClient向特定的控制器发出POST。我需要这个电话在UTF32。然而,每当我使用UTF32执行此操作时,它都不起作用。它返回一个错误500。当我切换到UTF8时,它工作得很好 以下是我的UTF32代码: var name = SettingsManager.GetScopeAttribute("[Map.Options]", "Name"); using (var client = new WebClient()) { //client.Enc

在我的MVCWeb应用程序中,我通过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)));
}
服务器报告此问题:

参数字典包含“FlameFusionIntertainment.Areas.Scavenius.Controllers.MapCloudController”中方法“System.Web.Mvc.ActionResult SubmitMap(Int32,System.String,System.String)”的非空类型“System.Int32”的参数“facebookID”的空条目。可选参数必须是引用类型、可为null的类型或声明为可选参数

UTF8的问题是,当数据实际通过时,因为我有特殊的字符(不可见空格等),所以当通过实体框架保存在Microsoft SQL数据库中时会出错


我检索到的数据在某种程度上存在格式错误。一些换行符丢失,一些空白不存在,等等。

我发现这是因为MVC显然不支持UTF32请求。正如Damien指出的,UTF32和UTF8在内容上没有区别。因此,当我切换到UTF8时,这一切都起了作用


我发现这是因为我使用了HttpUtility类的UrlEncode函数来编码表单数据变量。相反,我应该使用UrlEncodeUnicode函数。

什么异常导致500错误?错误详细信息是什么?这就是问题所在。它甚至不能执行控制器。甚至在控制器第一行的第一个断点上都没有。事件日志怎么说?当然是服务器,这就是500错误发生的地方。@MathiasLykkegaardLorenzen-正如人们反复向您解释的那样,UTF8和UTF32是Unicode的不同编码。它们都支持全部unicode字符。如果您使用的是UTF8,而事情并没有如您所期望的那样工作,那么切换到UTF32并不能解决问题。