【问题标题】:System.Net.WebClient - exception calling UploadValues with encoded string containing single quoteSystem.Net.WebClient - 使用包含单引号的编码字符串调用 UploadValues 的异常
【发布时间】:2015-09-04 14:26:59
【问题描述】:

使用包含单引号的编码字符串调用 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?

【问题讨论】:

    标签: c# asp.net-mvc webclient


    【解决方案1】:

    您使用的是HtmlEncode,但该值应为 URL-encoded,因为它将作为 application/www-form-urlencoded 内容上传。

    尝试改用HttpUtility.UrlEncode

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多