为什么在Visual C#2008中不存在提供命名空间名称的System.Web.HttpUtility.UrlEncode?

我正在尝试使用HttpUtility.UrlEncode()方法对URL进行编码,为什么我会得到

名称空间’System.Web’中不存在类型或命名空间名称’HttpUtility’(您是否缺少程序集引用?)

错误? 我正在使用Visual C#2008,Express Edition。

我正在使用的代码是简单的:

 using System; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; using System.Web; namespace Lincr { public partial class frmMain : Form { public frmMain() { InitializeComponent(); } private void cmdShorten_Click(object sender, EventArgs e) { WebRequest wrURL; Stream objStream; wrURL = WebRequest.Create("http://lin.cr?l=" + System.Web.HttpUtility.UrlEncode(txtURL.Text) + "&mode=api&full=1"); objStream = wrURL.GetResponse().GetResponseStream(); StreamReader objSReader = new StreamReader(objStream); textBox1.Text = objSReader.ReadToEnd().ToString(); } } } 

您需要包含对System.Web的引用。 在Solution Explorer中右键单击您的项目,然后选择Add Reference …. 如果你看一下MSDN,你会看到它包含在System.Web.dll程序集中,据我记得,默认情况下在新项目中没有引用它。

万一有人偶然发现这一点,正在运行VS 2010并且无法在可用的引用中找到System.Web …

右键单击项目并选择Properties,如果Target Framework设置为“.Net Framework 4 Client”,则将其更改为“.Net Framework 4”。

但要注意这将关闭,重新打开并重建您的项目(如果您有一个Web服务引用,这些将需要刷新)

对于使用.NET 4.0或更高版本的用户,可以使用与客户端配置文件一起使用的WebUtility.UrlEncode (不需要System.Web程序集引用)。

  1. 单击菜单中的项目选项卡
  2. 单击“添加引用”
  3. 在References窗口中单击Framework并检查System.Web