c# - Asp.Net 核心实现工厂未注册服务
问题描述
我正在使用 asp.net 核心 3.1
我正在尝试使用 .Net 核心 DI 实现工厂模式注入一个类。该代码在本地机器上运行良好,但一旦我将代码推送到生产环境,它就会给我错误。即使我以本地身份在生产环境中运行代码,它也会给我同样的错误
InvalidOperationException: No service for type 'Core.ViewModels.Tenant.TenantEditModel' has been registered.
我的实现如下。
我在 Startup 类中有以下注入
services.AddScoped<TenantResolver>();
services.AddScoped<TenantEditModel>(t=>t.GetService<TenantResolver>().GetTenant());
租户解析器类是
public class TenantResolver
{
private readonly IHttpContextAccessor _httpContextAccessor;
public TenantResolver(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public TenantEditModel GetTenant()
{
return (TenantEditModel)_httpContextAccessor.HttpContext.Items["tenant"];
}
}
现在在我的 _Layout.cshtml 视图中,我以以下方式注入服务
@inject Core.ViewModels.Tenant.TenantEditModel Tenant
@{
string themeName = string.Empty;
themeName = (Tenant.Theme.ToLower() == "default") ?
$"/lib/bootstrap/dist/css/bootstrap.min.css" :
$"/lib/bootstrap/dist/css/bootstrap.{Tenant.Theme.ToLower()}.min.css";
}
为什么即使在生产中本地运行应用程序,我也会在生产中出错?但在我的本地主机机器中,代码工作正常
解决方案
推荐阅读
- json - 下载其余对象而不是在 Eclipse 浏览器中显示
- html - 页面加载时我的视频标题不会播放
- java - 需要正则表达式来处理具有字符后跟偶数位数的字符串
- jenkins - Jenkins声明性管道如何阻止并行阶段,直到所有子阶段都完成
- java - 是否可以使用 lombok 向静态工厂方法添加注释
- kubernetes - Gitlab Kubernetes executor runner 执行作业日志不可见
- java - 如何解决错误:当我尝试在 Java 中实例化单例类时,“MyClass.INSTANCE”不是语句?
- ajax - PhoneGap Ajax API 请求没有响应
- r - 分类/天气预报
- arrays - 如何在适用时将可以是领域列表或字符串的任何内容转换为领域列表