在我的应用程序中,我将一些图像文件保存到应用程序文件夹本身中。当前使用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
?
答案 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.
}
}