我的应用程序中有一个 blazor 组件:
public class IndexComponent : ComponentBase
{
public string ContentRoot { get; set; }
public string WebRoot { get; set; }
private IHostingEnvironment HostingEnvironment;
public IndexComponent(IHostingEnvironment hostingEnvironment)
{
HostingEnvironment = hostingEnvironment;
}
protected override async Task OnInitAsync()
{
//Some Code Here
}
}
我正在尝试在我的应用程序中使用 DI,例如 IHostingEnvironment。
代码在这里没有给出编译时错误,但是当我运行它时,比该剃刀的代码隐藏文件(Index.razor.g.cs 文件)中的代码:
public class Index : IndexComponent
在这一行它说:
没有给出与所需正式要求相对应的论点 IndexComponent.IndexComponent的参数hostingEnvironment
这可以通过在 Razor 文件中使用 @inject IHostingEnvironment 来解决,但我正在将功能块从 Razor 移动到 IndexComponent.cs 文件,因此需要它。
两者都不能以下面的方式工作:
[Inject]
IHostingEnvironment HostingEnvironment
这里有什么作用呢?
注意:不使用ViewModel
更新1
在 StartUp.cs 中添加命名空间
using Microsoft.AspNetCore.Hosting.Internal;
然后
services.AddSingleton<IHostingEnvironment>(new HostingEnvironment());
现在可以在客户端项目上注册 IHostingEnvironment,但它没有属性值(contentrootpath 和 webrootpath)。
这里只有一件事是可用的,那就是 EnvironmentName ,它的值始终是 Production ,
HUWWW
Smart猫小萌
慕标琳琳
相关分类