3

所以,我完全是 C# 的菜鸟。我有一个 url,我需要对其进行编码才能使用 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);
        }
     }
}
4

3 回答 3

6

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

(请注意,程序集名称空间不同。程序集引用被添加到项目中,而您通常将名称空间“添加”到顶部带有using指令的单个文件。您已经获得了名称空间的using指令System.Web,但是如果HttpServerUtility不参考程序集,这将无助于您使用System.Web。)

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

于 2010-09-28T18:17:35.053 回答
5

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

替代文字

于 2010-09-28T18:17:27.817 回答
1

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

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

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

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

using System.Web;

这仅意味着您可以只编写 HttpUtility,而不是通过其全名System.Web.HttpUtility 访问该类,编译器会推断您的意思是 System.Web。

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

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

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

祝你好运,丹

于 2010-09-28T18:25:08.800 回答