如何使用服务类使Web-api与控制器配合使用?

时间:2019-07-09 09:51:22

标签: c# asp.net-web-api .net-core

所以我正在.net core 2.1中处理我的Web应用程序。我已经使用了Api模板,并且试图使控制器执行HttpGet,我想在其中列出数据库中的所有项目。

在这种情况下,我的DbProvider是服务类。

我遵循了本教程: https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.2&tabs=visual-studio

我的控制器

[Route("api/[controller]")]
    [ApiController]
    public class ValueController : ControllerBase
    {
        DbProvider _dbProvider;

        public ValueController(DbProvider dbProvider)
        {
            _dbProvider = dbProvider;
        }



        [HttpGet]
        public async Task<IEnumerable<Dto>> ListAllItemsAsync()
        {
            return await _dbProvider.ListAllValuesAsync();
        }

}

我的服务类别(提供者)

  public class DbProvider
    {
         DbRepository _repository;

        public DbProvider(DbRepository repository)
        {
            _repository = repository;
        }

        public async Task<IEnumerable<Dto>> ListItemsAsync()
        {
            return await _repository.ListAsync();
        }
}

我的启动文件:

   public void ConfigureServices(IServiceCollection services)
    {
            services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_2);
            var connString = "database-connectionsting-hardcoded-for-now";
            services.AddDbContext<DbContext>(options => options.UseSqlServer(connString));
            services.AddMvc();
            services.AddTransient<DbProvider>();

        }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {

                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else app.UseHsts();

                app.UseDefaultFiles();
                app.UseStaticFiles();
                app.UseHttpsRedirection();
                app.UseMvc();


            }

我收到错误代码404,在邮递员中我无法获得任何结果。
我希望从数据库中获取一些json值,因此我可以看到一切运行顺利。

我想念什么? 我可以执行常规的HttGet方法,并且可以正常工作。像这样:

  [HttpGet]
    public ActionResult Index() //This works
    { 
        return Content("Sucsess! ");
    }

2 个答案:

答案 0 :(得分:1)

我要结束这个问题,因为我的问题与依赖注入和分层体系结构有关。我在不同的博客中阅读后发现了这一点。 无论如何,谢谢大家的帮助!

答案 1 :(得分:0)

您必须使用以下网址:

localhost:44339/api/value/ListAllItemsAsync