【发布时间】:2022-01-11 21:05:54
【问题描述】:
当我构建我的项目时,一切都很好,但是当我在浏览器中运行它时,我从 Program.cs 文件中得到以下错误。我也在 Startup.cs 中添加了该服务。如果我在 Controller 中注释掉 INewsModelfactory 引用,它会运行,但我不明白我错过了什么会引发错误。
1 个,共 1 个
System.AggregateException: '无法构造某些服务(验证服务描述符时出错'ServiceType: websiteName.Web.Factories.INewsModelFactory Lifetime: Scoped ImplementationType: websiteName.Web.Factories.NewsModelFactory':尝试激活“websiteName.Web.Factories.NewsModelFactory”时无法解析类型“websiteName.Services.News.INewsService”的服务。)”
2 个,共 2 个
InvalidOperationException:尝试激活“websiteName.Web.Factories.NewsModelFactory”时无法解析类型“websiteName.Services.News.INewsService”的服务。
我想我已经添加了所涉及的所有内容,如果还需要任何其他内容,请告诉我。
控制器
public async Task<IActionResult> List()
{
var model = await _newsModelFactory.PrepareNewsItemListModelAsync();
return View(model);
}
INewsModelFactory
NewsItemModel PrepareNewsItemModelAsync(NewsItemModel model, NewsItem newsItem);
NewModelFactory
private readonly INewsService _newsService;
public NewsModelFactory(INewsService newsService)
{
_newsService = newsService;
}
public async Task<NewsItemListModel> PrepareNewsItemListModelAsync()
{
var newsItems = await _newsService.GetAllNewsAsync();
var model = new NewsItemListModel
{
NewsItems = newsItems.Select(newsItem =>
{
var newsModel = new NewsItemModel();
PrepareNewsItemModelAsync(newsModel, newsItem);
return newsModel;
}).ToList()
};
return model;
}
新闻服务
public async Task<IEnumerable<NewsItem>> GetAllNewsAsync()
{
var news = await _db.NewsItems.ToListAsync();
return news;
}
DbContext
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) {}
public DbSet<NewsItem> NewsItems { get; set; }
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
. . .
services.AddScoped<INewsModelFactory, NewsModelFactory>();
services.AddScoped<INewsService,NewsService>();
}
【问题讨论】:
标签: c# .net asp.net-mvc asp.net-core