在.Net 4.5中无法识别HttpUtility

我开发了一个WinForm应用程序,目标框架设置为.net 4.0,现在我希望添加到一个项目,它的目标框架设置为.net 4.5。 在我将4.0 WinForm应用程序添加到我的4.5项目后,我不断在我的HttpUtility对象上收到错误。

data += "&batch_data=" + HttpUtility.UrlEncode(batch, System.Text.Encoding.GetEncoding("ISO-8859-1")); 

“当前上下文中不存在名称’HttpUtility’”

我确实包含了HttpUtility所在的System.Web命名空间。

Visual Studio错误:

 CS0234 The type or namespace name 'HttpUtility' does not exist in the namespace 'System.Web' (are you missing an assembly reference?) 

问题出在其他地方。

正如您在MSDN中看到的, HttpUtility类存在于.NET Framework 4.5中的System.Web中。

您可能正在定位客户端配置文件:定位项目属性中的完整框架。 除此以外:

  • 要么你没有using System.Web;添加正确的using语句using System.Web;
  • 或者您没有在项目中添加对System.Web.dll的引用。

HttpUtility类存在于.NET 1.1中,因此我认为只要您包含对System.Web的引用,常规项目就不可能“看不到它”。

您可能正在使用PCL( 可移植类库 ),它使用您所选平台支持的框架的精简版本,如Windowsapp store应用,Windows Phone,Silverlight等。

WebUtility

您还有另一种可能性:使用WebUtility类 。 WebUtility类是Microsoft自己推荐的,应该在Web应用程序之外使用。

HttpUtility类一样,它也为您提供编码和解码URL的可能性。

这样,您就不会将库导入项目或设置某些特定的配置文件。


来自文档( 来源 )

HttpUtility类由HttpServerUtility类在内部使用,其方法和属性通过内部ASP.NET Server对象公开。 此外,HttpUtility类包含无法从服务器访问的编码和解码实用程序方法。

要对Web应用程序外部的值进行编码或解码,请使用WebUtility类。

我希望这个链接可以帮到你。 http://msdn.microsoft.com/en-us/library/system.web.httputility(v=vs.110).aspx Dot net framework 4.5支持HttpUtility,因为它在System.Web命名空间下。 还要在没有System.Web.Extensions引用的情况下将System.Web引用添加到项目中。 如果它不起作用,则删除现有的并将System.Web的新引用添加到项目中。 还要检查它所针对的框架应该是没有Client的.NET Framework 4或4.5。