完整的C#noob,VS2010,不能使用HttpServerUtility.UrlEncode?

时间:2010-09-28 18:15:20

标签: c# urlencode url-encoding

所以,我是C#的完整菜鸟。我有一个网址,我需要编码才能使用urlencoded帖子。

问题是,我发现的每个资源都说使用System.Web.HttpServerUtility.UrlEncode。或者,我看到资源告诉我使用System.Web.Util.HttpEncoder()。

我添加了对system.web的引用,但是得到了“system.web命名空间中不存在”和“system.web.util命名空间中不存在”错误。

任何提示都会很好!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Web;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string url = HttpUtility.UrlEncode("http://stackoverflow.com/");
            MessageBox.Show(url);
        }
     }
}

3 个答案:

答案 0 :(得分:6)

您有可能正在使用不包含System.Web.dll的.NET 4客户端配置文件 - 或者您还没有添加对它的引用。如果进入项目属性,在“应用程序”下选择“.NET Framework 4”作为目标框架,而不是“.NET Framework 4 Client Profile”。然后,您应该能够添加对System.Web程序集的引用。

(请注意,程序集与命名空间相同。程序集引用被添加到项目中,而您通常将命名空间“添加”到具有using指令的单个文件中您已经获得using命名空间的System.Web指令,但如果没有HttpServerUtility程序集的引用,则无法使用System.Web。)

或者,根据您的完全要求,您可以使用Uri.EscapeDataStringUri.EscapeUriString。这两个都可以在客户端配置文件中找到。有这么多不同的方法做到这一点有点烦人 - 选择正确的方法可能很棘手:(

答案 1 :(得分:5)

您可能需要将System.Web程序集的引用添加到项目中:

alt text

答案 2 :(得分:1)

我相信你没有添加对System.Web.dll的引用。

引用和名称空间导入是不同的东西。 命名空间是一种将相关类组合在一起的方法,因此与集合相关的所有类都驻留在System.Collections中,所有Windows窗体都在System.Windows.Forms中,您可能还希望组织项目以分离业务逻辑,表示和数据访问不同的命名空间。

然而,名称空间纯粹是合乎逻辑的。您可以构建几个将类添加到相同名称空间的库,也可以在一个项目中使用多个名称空间。

您使用使用语句在此处导入了 System.Web命名空间

using System.Web;

这仅仅意味着不是通过全名,System.Web.HttpUtility访问类,而是只编写HttpUtility,编译器会推断你的意思是System.Web。< / p>

但是,对于Windows应用程序,默认情况下不引用库本身,称为System.Web.dll 。这意味着现在编译器甚至都不知道System.Web类。

要添加对物理库文件的引用,请右键单击项目引用文件夹,选择“添加引用... ”并选择 System.Web的.dll

而且,名称空间只是逻辑分组,程序集是硬盘驱动器上的物理文件。

祝你好运, 丹