在两个asp.net MVC Web应用程序之间传递非ASCII字符将无法识别

joh*_* Gu 4 .net c# asp.net asp.net-mvc asp.net-mvc-4

我有两个asp.net mvc-4和mvc-5 web应用程序,现在在我的第一个asp.net mvc中,我有以下内容WebClient在第二个Web应用程序上调用一个动作方法(Home/CreateResource): -

using (WebClient wc = new WebClient()) 
         {
          var data = JsonConvert.SerializeObject(cr);             
          string url = scanningurl + "Home/CreateResource";
          Uri uri = new Uri(url);
          wc.Headers.Add(HttpRequestHeader.ContentType, "application/json");
          wc.Headers.Add("Authorization", token);
          output = wc.UploadString(uri, data);
         }
Run Code Online (Sandbox Code Playgroud)

现在在data转移到第二个动作方法的对象内部,它包含一个密码值,在我的情况下,这个值££123有2个非ASCII字符.

现在在第二个动作方法上,它将接受以下值: -

在此输入图像描述

如果有办法在2个动作方法之间传递非ASCII字符,那么任何人都可以这样做吗?我在第一个操作方法上检查密码是否已正确序列化,并且密码正在从视图正确传递到操作方法.但问题是在数据如何在网络内传输或第二个动作方法上的模型绑定器如何接受传入的数据对象?

Loc*_*eer 7

总结一下:

如果要传输非ASCII(或高ASCII)字符(例如£),则需要指定WebClient的Encoding属性.

在这种情况下,设置属性值的顺序并不重要,只要在调用之前设置它UploadString.

using (WebClient wc = new WebClient())
{
    var data = JsonConvert.SerializeObject(cr);
    string url = scanningurl + "Home/CreateResource";
    Uri uri = new Uri(url);
    wc.Headers.Add(HttpRequestHeader.ContentType, "application/json");
    wc.Headers.Add("Authorization", token);
    wc.Encoding = Encoding.UTF8;
    output = wc.UploadString(uri, data);
}
Run Code Online (Sandbox Code Playgroud)

如果您希望使用WebClient从网站下载数据,请确保将编码设置为该网站使用的值.