当前位置: 首页 > 知识库问答 >
问题:

尝试激活时无法解析类型的服务

黄俊誉
2023-03-14

在我的ASP. NET Core应用程序中,我收到以下错误:

无效操作异常:在尝试激活“城市”时无法解析类型“城市”的服务。模型。IRepository。控制器。HomeController。

我是家庭控制器,我试图将城市的getter传递给视图,如下所示:

public class HomeController : Controller
{
    private readonly IRepository repository;

    public HomeController(IRepository repo) => repository = repo;

    public IActionResult Index() => View(repository.Cities);
}

我有一个文件存储库。cs包含一个接口及其实现,如下所示:

public interface IRepository
{
    IEnumerable<City> Cities { get; }
    void AddCity(City newCity);
}

public class MemoryRepository : IRepository
{
    private readonly List<City> cities = new List<City>();

    public IEnumerable<City> Cities => cities;

    public void AddCity(City newCity) => cities.Add(newCity);
}

我的启动类包含从模板生成的默认代码。我做了任何更改:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        ...
    }
}

共有3个答案

皇甫雨石
2023-03-14

其他答案是正确的,但我正在开发一个新的asp。net core 2.1。x项目,并出现此错误。

结果被我弄错了。

因此,在我的控制器中,而不是像这样正确使用接口

public HomeController(IApplicationRepository applicationRepository)
{
    _applicationRepository = applicationRepository;
}

我的输入错误让我使用了应用程序存储库(ApplicationRepository),而不是下面的界面(Application Repository),因此没有错误地发现缺少的“I”很有趣:/

public HomeController(IApplicationRepository applicationRepository)
{
    _applicationRepository = applicationRepository;
}

因此,控制器没有解决该问题。。。

弘靖琪
2023-03-14

我们在实体框架核心数据库优先方法中遇到了这个错误。我遵循以下步骤,错误得到解决

第1步:检查您的上下文类构造函数应该是这样的

public partial class ZPHSContext : DbContext
{
    public ZPHSContext(DbContextOptions<ZPHSContext> dbContextOptions)
        : base(dbContextOptions)
    {
    }
}
    

第2步:在启动文件中

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddDbContext<ZPHSContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("BloggingDatabase")));
}
    

步骤3:appsettings中的连接字符串

"ConnectionStrings": {
    "BloggingDatabase": "Server=****;Database=ZPHSS;Trusted_Connection=True;"
}

步骤4:删除上下文类中OnConfigurang方法中的默认代码

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
孟宏才
2023-03-14

要使依赖注入框架解析IRepository,必须首先在容器中注册它。例如,在ConfigureServices中添加以下内容:

services.AddScoped<IRepository, MemoryRepository>();

对于NET 6默认使用新的托管模型,在程序中添加以下内容。cs替代:

builder.Services.AddScoped<IRepository, MemoryRepository>();

添加作用域仅是服务生命周期的一个示例:

对于web应用程序,作用域生存期表示每个客户端请求(连接)创建一次服务。

有关ASP中依赖项注入的更多信息,请参阅文档。净核心。

 类似资料:
  • 我创建了一个。NET核心MVC应用程序,并使用依赖项注入和存储库模式将存储库注入控制器。但是,我得到一个错误: 无法解析类型WebApplication ation1的服务。数据。BloggerRepository'同时尝试激活'WebApplication 1.控制器。BlogController'. 型号(Blog.cs) DbContext(BloggingContext.cs) 存储库(I

  • 我创建了一个.NETCoreMVC应用程序,并使用依赖注入和存储库模式将存储库注入我的控制器。然而,我得到一个错误: 无法解析类型WebApplication1.Data.BloggerRepository的服务,而试图激活WebApplication1.Controllers.BlogController。 存储 库: 控制器: 启动. cs: 我不知道我做错了什么。有什么想法吗?

  • 我正在尝试创建ASP。NET核心应用程序使用通用存储库模式,使用实体框架和服务层。然而,每当我启动项目时,都会遇到以下错误: 无法解析“GameSource”类型的服务。数据存储库。GameRepository“正在尝试激活”GameSource。服务。游戏服务'。 游戏控制器。反恐精英: 游戏服务。反恐精英: 游戏存储库。反恐精英: BaseRepository。反恐精英: GameSource

  • 登录控制器中出现此错误。 无效操作异常:在尝试激活“汽车。服务器。控制器。AuthController”时,无法解析类型为“Microsoft. AspNetCore。身份。UserManager'1[汽车。模型。帐户]”的服务。 这是Auth Controller构造函数: 这里是启动中的ConfigureServices。反恐精英:

  • 我正在创建viewcomponents,下面是我的全部代码。。但当我调用这个viewcomponent时,我得到如下错误。。所以,任何人都可以帮助我解决这个问题,并向我解释到底是什么问题。 错误是: InvalidOperationException:无法解析“Perfulmestore”类型的服务。数据模型。ShoppingCart正在尝试激活香水商店。视图组件。ShoppingCartSumm

  • 问题内容: 因此,我不断在多个服务器上收到此烦人的错误(它是一个警告,因此我将忽略它,但我需要该功能) 警告:curl_setopt()[function.curl- setopt]:启用safe_mode或在第56行的/home/xxx/public_html/xxx.php中设置了open_basedir时,无法激活CURLOPT_FOLLOWLOCATION 我将如何通过SSH解决此问题?