首页 > 解决方案 > 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";
}

为什么即使在生产中本地运行应用程序,我也会在生产中出错?但在我的本地主机机器中,代码工作正常

标签: c#asp.net-coreasp.net-core-mvc

解决方案


推荐阅读