【问题标题】:Using WebClient in ASP.NET 5在 ASP.NET 5 中使用 WebClient
【发布时间】:2014-11-16 16:04:07
【问题描述】:

我正在使用 VS15 测试版并尝试使用 WebClient。虽然引用了 System.Net,并且智能感知表明 WebClient 类可用,但在构建时出现以下错误:

命名空间“System.Net”中不存在类型或命名空间名称“WebClient”(您是否缺少程序集引用?)MyProj.ASP.NET Core 5.0 HomeController.cs

我正在做以下简单的代码:

var client = new System.Net.
var html = client.DownloadString(url);

当我转到 Web Client 的定义时,它显示了源代码。不太确定问题是什么 - WebClient 移动了吗?我正在努力寻找解决方案。

谢谢!

【问题讨论】:

    标签: webclient asp.net-core asp.net-core-mvc


    【解决方案1】:

    不确定WebClient,但您也可以使用System.Net.Http.HttpClient 发出网络请求。

    将这些引用添加到project.json:

    "frameworks": {
        "aspnet50": {
            "frameworkAssemblies": {
                "System.Net.Http": "4.0.0.0"
            }
        },
        "aspnetcore50": {
            "dependencies": {
                "System.Net.Http": "4.0.0-beta-*"
            }
        }
    },
    

    然后是从 MVC 6 操作方法调用它的方法:

    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Threading.Tasks;
    using Microsoft.AspNet.Mvc;
    
    namespace WebApplication50.Controllers
    {
        public class HomeController : Controller
        {
            public async Task<IActionResult> Index()
            {
                var httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MyClient", "1.0"));
                var result = await httpClient.GetStringAsync("http://www.microsoft.com");
    
                ...
    
                return View();
            }
        }
    }
    

    【讨论】:

    • 可能会建议为HttpClient示例添加using(...) { ... },以便读者不要忘记正确处理。
    • HttpClient 不需要根据它的创建者来处理。他们确实建议您重用 HttpClient 而不是每次为请求创建一个。
    • 要添加对 project.json 的引用,只需使用“dnu install System.Net.Http”
    • @MuhammadRehanSaeed 你能链接到哪里说不需要处理吗?它是一个一次性类,意味着它使用一次性资源(即网络连接),因此必须被处理掉。重复使用并不意味着不需要处置,两者并不相互排斥。
    【解决方案2】:

    如果您在 project.json 更改中仅针对完整的 .NET Framework 而不是 .NET Core,您仍然可以使用 WebClient

      "frameworks": {
        "dnx451": { },
        "dnxcore50": { }
      },
    

      "frameworks": {
        "dnx451": { }
      },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多