有什么方法可以在.net核心类库中使用IHostingEnvironment?

时间:2019-01-10 05:51:54

标签: asp.net-core asp.net-core-mvc asp.net-core-2.1 ihostingenvironment

在我的应用程序中,我将一些图像文件保存到应用程序文件夹本身中。当前使用IHostingEnvironment界面获取路径。 喜欢

private readonly IHostingEnvironment _hostingEnvironment;
        /// <summary>
        /// Initializes a new instance of the <see cref="ProductController"/> class.
        /// </summary>
        /// <param name="unitService">The product service.</param>
        public ProductController(IProductService productService, IHostingEnvironment hostingEnvironment)
        {
            this._productService = productService;
            this._hostingEnvironment = hostingEnvironment;
        }

使用此代码_hostingEnvironment.ContentRootPath

获取路径

但是将来我们可能会将图像位置更改为云或其他位置,因此我编写了一种扩展方法来获取实际路径

public static class AssetPathHandlerExtensions
    {
        private readonly IHostingEnvironment _hostingEnvironment;//error

        public static string AppendAssetPath(this string fileName, string subDirectryPath)
        {
           //here i need to get the ContentRootPath and append it with filename
        }
    }

该扩展方法在类库中,我正在automapper映射页面中调用此扩展方法。

我面临的问题是我无法在类库中使用IHostingEnvironment,因为它不包含Microsoft.AspNetCore.Hosting.Abstractions.dll程序集。

是否可以在类库中使用IHostingEnvironment

1 个答案:

答案 0 :(得分:2)

在类库中使用 IHostingEnvironment 没问题。只需使用以下命令在类库中安装其NuGet软件包:

Install-Package Microsoft.AspNetCore.Hosting

像这样从您的DI容器中解析 IHostingEnviroment

public class SomeClass
{
    private IHostingEnvironment _hostingEnvironment;

    public SomeClass(IHostingEnvironment hostingEnvironment)
    {
        _hostingEnvironment = hostingEnvironment;
    }

    public void SomeMethod()
    {
        // Use IHostingEnvironment with _hostingEnvironment here.
    }
}