System.Net.WebClient - 使用包含单引号

时间:2015-09-04 14:26:59

标签: c# asp.net-mvc webclient

使用包含单引号的编码字符串调用UploadValues时出现以下异常:

  

System.dll中出现“System.Net.WebException”类型的异常   但未在用户代码中处理

     

其他信息:远程服务器返回错误:(500)   内部服务器错误。

代码在ASP.NET MVC网站的以下操作中运行:

   public class HomeController : Controller
    {
        public string Index()
        {
            var welcomeMessage = string.Empty;

            using (var client = new WebClient())
            {
                var encodedName = HttpUtility.HtmlEncode("Dave's");
                var nameValue = new NameValueCollection { { "name", encodedName } };

                var result = client.UploadValues("http://localhost:54011/Services/GetString", nameValue);

                welcomeMessage = System.Text.Encoding.UTF8.GetString(result);
            }

            return welcomeMessage;
        }
}

GetString操作定义如下:

public class ServicesController : Controller
{
    public string GetString(string name)
    {
        return "Hello " + name;
    }
}

如果删除单引号,方法成功。如何将带引号的字符串传递给UploadValues?

1 个答案:

答案 0 :(得分:1)

您正在使用HtmlEncode,但该值应为网址 - 已编码,因为它将作为application / www-form-urlencoded内容上传。

请尝试使用HttpUtility.UrlEncode