我目前正在为 .NET 4 客户端配置文件开发应用程序,因为这是通过 Windows 更新出现在大多数家用计算机上的版本。
但是,我无法添加对的引用,System.Web.dll
因为它在此版本中不存在 - 我该怎么办?
将 System.Web.dll 与我的应用程序一起部署是个好主意,还是行不通?我真的需要 HTTP 连接,所以我不能修改我的应用程序作为解决方法。将我的应用程序定位到 .NET 4(无客户端配置文件)可能是一种可能性,还是仅在只有客户端配置文件的计算机上不起作用?
我目前正在为 .NET 4 客户端配置文件开发应用程序,因为这是通过 Windows 更新出现在大多数家用计算机上的版本。
但是,我无法添加对的引用,System.Web.dll
因为它在此版本中不存在 - 我该怎么办?
将 System.Web.dll 与我的应用程序一起部署是个好主意,还是行不通?我真的需要 HTTP 连接,所以我不能修改我的应用程序作为解决方法。将我的应用程序定位到 .NET 4(无客户端配置文件)可能是一种可能性,还是仅在只有客户端配置文件的计算机上不起作用?
NET 4 客户端配置文件,因为这是通过 Windows 更新出现在大多数家庭计算机上的版本
并不真地。默认情况下,任何 Windows 10 之前的安装中当前都不存在 .NET 4(无论是否存在客户端配置文件)。例如,Windows 7 附带 .NET 3.5 SP1,而不是 .NET 4.0。可能有 Windows 更新,但它是可选的。
因此,您不妨以完整的 .NET 4 框架为目标。
可以在此处找到操作系统和 .NET 框架版本之间的链接。复选标记表示一个版本是开箱即用的,加号表示它可以安装。
另请注意,4.5、4.6 和 4.6.1 都是就地更新,这意味着具有其中任何一个的系统也被视为具有 4.0。
如果您的目标是 .NET 4.0 而不是 .NET 4.0 客户端配置文件,您应该将其添加为先决条件。这将允许在您安装应用程序时安装它。
如果您运行 .NET 4.0 客户端配置文件,您仍然可以使用套接字,它们位于System.Net
. 您只需要System.Web
满足以下条件:
System.Web 命名空间提供了启用浏览器-服务器通信的类和接口。这个命名空间包括 HttpRequest 类,它提供了有关当前 HTTP 请求的大量信息;HttpResponse 类,它管理到客户端的 HTTP 输出;和 HttpServerUtility 类,它提供对服务器端实用程序和进程的访问。System.Web 还包括用于 cookie 操作、文件传输、异常信息和输出缓存控制的类。
如果您只想使用 HttpWebRequest,可以在 .Net 4 的客户端配置文件中使用它。
这是您可以尝试的示例,只需使用 .Net 4 客户端配置文件创建一个新的控制台应用程序并将其粘贴到 Program.cs...
using System;
using System.IO;
using System.Net;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
var request = WebRequest.Create("http://google.com");
var response = request.GetResponse();
using (var s = response.GetResponseStream())
using( var sr = new StreamReader(s))
{
Console.Write(sr.ReadToEnd());
}
Console.ReadKey();
}
}
}
您在其中一条评论中询问了 HttpCookieCollection。似乎 HttpWebRequest 使用 CookieContainer 来存储 cookie。
即使您将副本部署System.Web.dll
到客户端也无法解决问题。问题是:您无法从为 .NET 4 客户端配置文件编译的程序集链接到为 .NET 4 配置文件(不是客户端)编译的程序集。唯一的解决方案是将您的程序集定位到非客户端配置文件。
关于 .NET Framework Client Profile的MSDN 页面。