簡體   English   中英

總是從 IWebHostEnvironment 和 IHttpContextAccessor 獲取 null 值

[英]Always getting null value from IWebHostEnvironment and IHttpContextAccessor

我正在嘗試上傳文件。 但是 IWebHostEnvironment 和 IHttpContextAccessor 總是返回 null 值。 這是 controller 的一部分。

private readonly IUnitOfWork _unitOfWork;
private readonly IWebHostEnvironment _webHostEnvironment;
private readonly IHttpContextAccessor _httpContextAccessor;

[HttpPost]
public async Task<ActionResult<LS>> PostStApp(StApp stapp)
{
  var url = _httpContextAccessor.HttpContext.Request.Host.Value;
  var path = $"{_webHostEnvironment.WebRootPath}\\upload\\{stapp.ImageName}";
  var fileStream = System.IO.File.Create(path);
  fileStream.Write(stapp.Image, 0, stapp.Image.Length);
  fileStream.Close();
  stapp.ImageName = $"https://{url}/upload/{stapp.ImageName}";

        await _unitOfWork.StApp.Insert(stapp);
        await _unitOfWork.Save(HttpContext);

        return CreatedAtAction("GetStApp", new { id = stapp.Id }, stapp);
}

url 和路徑始終是 null。 我錯過了什么嗎?

確保通過構造函數對兩個服務進行依賴注入,如下所示:

private readonly IWebHostEnvironment _webHostEnvironment;
private readonly IHttpContextAccessor _httpContextAccessor;
public HomeController(IWebHostEnvironment webHostEnvironment, IHttpContextAccessor httpContextAccessor)
{
    _webHostEnvironment = webHostEnvironment;
    _httpContextAccessor = httpContextAccessor;
}

我忘了依賴注入 2 服務。 將其放入 controller 后即可使用。

  public SAppController(IUnitOfWork unitOfWork, IWebHostEnvironment webHostEnvironment, IHttpContextAccessor httpContextAccessor)
    {
        _unitOfWork = unitOfWork;
        this._webHostEnvironment = webHostEnvironment;
        this._httpContextAccessor = httpContextAccessor;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM