1
我想做一個內部API的Web請求,我發現大多數人使用HTTPCLient但我只是不想硬編碼依賴項在我的控制器或創建一個包裝現在,所以我決定嘗試IWebRequestCreate。 在運行該應用程序我得到以下錯誤的時間:如何resvister IWebRequestCreate mvc 6
InvalidOperationException: Unable to resolve service for type 'System.Net.IWebRequestCreate' while attempting to activate 'Project.Web.Main.Controllers.HomeController'.
那是因爲我還沒有登記在該服務的啓動,所以當我試圖註冊的WebRequest,原來這是一個抽象類,我不得不使用create方法,所以有什麼想法?
我在考慮註冊這樣的:
services.AddTransient<IWebRequestCreate>(x=>x.GetService(???));
我的控制器是很基本的:
public class HomeController : Controller
{
private readonly IWebRequestCreate _webRequest;
private readonly AppOptions _options;
public HomeController(IWebRequestCreate webRequest, IOptions<AppOptions> settings)
{
_webRequest = webRequest;
_options = settings.Value;
}
public IActionResult Index()
{
var wr = _webRequest.Create(new Uri(_options.ApiHost));
var response = wr.GetResponseAsync();
//TODO map the response to a DTO
return View();
}
}
感謝。