我目前正在开发.NET 4 Client Profile的应用程序,因为这是通过Windows Update在大多数家用计算机上出现的版本。
但是,我无法添加对System.Web.dll
的引用,因为此版本中不存在 - 我应该怎么做?
将System.Web.dll与我的应用程序一起部署是一个好主意,还是不行?我真的需要HTTP连接和所有,所以我不能修改我的应用程序作为一种解决方法。将我的应用程序定位到.NET 4(没有客户端配置文件)可能是一种可能性,或仅仅在仅具有客户端配置文件的计算机上不起作用?
答案 0 :(得分:7)
NET 4 Client Profile,因为这是 大多数都会出现的版本 家庭计算机通过Windows Update
不是真的。默认情况下,任何Windows 10之前的安装目前都不存在.NET 4(客户端配置文件或非客户端配置文件)。例如,Windows 7附带.NET 3.5 SP1,而不是.NET 4.0。可能有Windows更新,但它是可选的。
因此,您也可以定位完整的.NET 4框架。
可以找到操作系统和.NET框架版本之间的链接here。复选标记表示开箱即用的版本,加号表示可以安装。
另请注意,4.5,4.6和4.6.1都是就地更新,这意味着具有其中任何一个的系统也被认为具有4.0。
答案 1 :(得分:3)
如果您的目标是.NET 4.0而不是.NET 4.0 Client Profile,则应将其添加为prerequisite。这将允许在安装应用程序时安装它。
如果运行.NET 4.0 Client Profile,您仍然可以使用Sockets,它们位于System.Net
。当以下情况适用时,仅需要System.Web
:
System.Web命名空间提供 启用的类和接口 浏览器 - 服务器通信。这个 namespace包含HttpRequest 类,提供广泛的 有关当前HTTP的信息 请求; HttpResponse类,哪个 管理客户端的HTTP输出;和 HttpServerUtility类,其中 提供对服务器端的访问 公用事业和流程。的System.Web 还包括cookie类 操纵,文件传输,异常 信息和输出缓存控制。
答案 2 :(得分:3)
如果您只是想使用HttpWebRequest,它可以在.Net 4的客户端配置文件中找到。
以下是您可以尝试的示例,只需使用.Net 4 Client Profile创建一个新的控制台应用程序并将其粘贴到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。
答案 3 :(得分:2)
即使您将System.Web.dll
的副本部署到客户端也无法解决问题。问题是:您无法从为.NET 4 Client配置文件编译的程序集链接到为.NET 4配置文件(而非客户端)编译的程序集。唯一的解决方案是将程序集定位到非客户端配置文件。