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

Sat*_*hat 21 c# urlencode visual-studio-2008

我正在尝试使用该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();

        }

    }
}
Run Code Online (Sandbox Code Playgroud)

Cec*_*ame 30

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

  • @Sathya:添加`using`指令与引用无关,它只是让你可以在代码文件中使用来自该namspace的类型而不指定完整的类型名称(所以你可以编写`HttpUtility.UrlEncode`而不是` System.Web.HttpUtility.UrlEncode`). (4认同)

ear*_*cam 29

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

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

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

  • +1谢谢.我通常不使用Express,所以我想知道为什么我找不到这个引用. (2认同)

小智 5

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