在ASP.NET 5中使用WebClient

Ker*_*ter 5 webclient asp.net-core-mvc asp.net-core

我正在使用VS15测试版并尝试使用WebClient.虽然引用了System.Net,并且intellisense建议WebClient类可用,但在构建时我收到以下错误:

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

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

var client = new System.Net.
var html = client.DownloadString(url);
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Eil*_*lon 14

不确定WebClient,但您也可以使用System.Net.Http.HttpClientWeb请求.

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

"frameworks": {
    "aspnet50": {
        "frameworkAssemblies": {
            "System.Net.Http": "4.0.0.0"
        }
    },
    "aspnetcore50": {
        "dependencies": {
            "System.Net.Http": "4.0.0-beta-*"
        }
    }
},
Run Code Online (Sandbox Code Playgroud)

接下来是如何从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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 可能会建议为HttpClient示例添加`using(...){...}`,这样读者就不会忘记正确处理. (7认同)
  • HttpClient不需要根据它的创建者进行处理.他们建议您重复使用HttpClient,而不是每次都为请求创建一个. (2认同)
  • 要添加对project.json的引用,只需使用"dnu install System.Net.Http" (2认同)