2014-11-16 95 views
5

我正在VS15測試版中嘗試使用WebClient。雖然System.Net被引用,而智能感知意味着WebClient類是可用的,在構建我得到以下錯誤:在ASP.NET 5中使用WebClient

The type or namespace name 'WebClient' does not exist in the namespace 'System.Net' (are you missing an assembly reference?) MyProj.ASP.NET Core 5.0 HomeController.cs

我做以下簡單的代碼:

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

當我去到Web客戶端的定義,它顯示了我的來源。不太清楚問題是什麼 - WebClient移動了嗎?我正在努力尋找決議。

謝謝!

回答

14

不確定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(); 
     } 
    } 
} 
+7

可能會建議將使用'(...){...}'爲HttpClient的例子,所以讀者不要忘了妥善處置。 –

+2

HttpClient不需要根據創建者進行處理。他們建議您重複使用HttpClient,而不是每次創建一個請求。 –

+2

要添加對project.json的引用,只需使用「dnu install System.Net.Http」 –

0

,您仍然可以使用WebClient如果您只指定滿。 NET Framework而不是.NET Core通過在您的project.json更改:

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

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