C# asp.net核心Web API控制器停止响应,出现错误500

C# asp.net核心Web API控制器停止响应,出现错误500,c#,asp.net,localhost,asp.net-core-webapi,C#,Asp.net,Localhost,Asp.net Core Webapi,我正在为搜索功能制作PoC。我已经有一段时间没有做web API了,现在我从和其他人开始,更改连接数据库所需的内容等等 这是在周五起作用的事情之一,而在周一早上就不起作用了 我已经创建了一个web API项目,其中已经搭建了一个valuesController。所以我创建了一个名为searchController的新控制器。我编写了一个简单返回字符串的方法,如下所示: [Produces("application/json")] [Route("api/Search")] public clas

我正在为搜索功能制作PoC。我已经有一段时间没有做web API了,现在我从和其他人开始,更改连接数据库所需的内容等等

这是在周五起作用的事情之一,而在周一早上就不起作用了

我已经创建了一个web API项目,其中已经搭建了一个valuesController。所以我创建了一个名为searchController的新控制器。我编写了一个简单返回字符串的方法,如下所示:

[Produces("application/json")]
[Route("api/Search")]
public class SearchController : Controller
{
    private readonly DbContext _context;

    public SearchController(DbContext context)
    {
        _context = context;
    }

    // GET api/Search/search criteria
    [HttpGet("{q}")]
    public string Search(string q)
    {
        return $"this will be your answer to: {q}";
    }
}
我不知道它为什么起作用,为什么现在不起作用。我把它改成了我在下面发布的值控制器

值控制器 当我运行解决方案时,默认控制器是values,当我将url更改为

它说该页面在chrome中无法工作,错误为500

更新startup.cs 我发现了两种注册连接字符串的方法,我都写了,但是第二种方法使用DI,不能像预期的那样工作,当调用数据库时,连接字符串为null。我就是这样得到的

  public void ConfigureServices(IServiceCollection services)
        {
            //Configure DB connection strings
            DbContext.ConnectionString = Configuration.GetConnectionString("DatabaseEF");

            //services.AddDbContext<DbContext>(opt => opt.UseSqlServer(Configuration.GetConnectionString("DatabaseEF")));


            // Add framework services.
            services.AddMvc();
        }
解决方案
我删除了构造函数和私有变量,它再次工作,正如@Yuri S

所建议的,尽管问题中有一个解决方案部分,该部分没有考虑依赖注入,应该作为临时解决方案

如果要使用依赖项注入,文件应如下所示:

[Produces("application/json")]
[Route("api/Search")]
public class SearchController : Controller
{
    private readonly DbContext _context;

    public SearchController(DbContext context)
    {
        _context = context;
    }

    // GET api/Search/search criteria
    [HttpGet("{q}")]
    public string Search(string q)
    {
        return $"this will be your answer to: {q}";
    }
}
数据库上下文
您是否正在将relatoria_BuscadorContext添加到依赖项注入中?我正在使用startup.cs中的代码更新它,以便您也可以检查它。谢谢。500是一般服务器错误。您需要通过在Startup.cs-public void Configure.中添加此代码来向我们显示异常页面。。{app.UseDeveloperExceptionPage;}。
  public void ConfigureServices(IServiceCollection services)
        {
            //Configure DB connection strings
            DbContext.ConnectionString = Configuration.GetConnectionString("DatabaseEF");

            //services.AddDbContext<DbContext>(opt => opt.UseSqlServer(Configuration.GetConnectionString("DatabaseEF")));


            // Add framework services.
            services.AddMvc();
        }
public partial class MyDbContext : DbContext
{
    public virtual DbSet<Table> Table { get; set; }

    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
    {}
}
    public void ConfigureServices(IServiceCollection services)
    {
        //Configure DB connection strings
        services.AddDbContext<MyDbContext>(opt => opt.UseSqlServer(Configuration.GetConnectionString("MyDbEF")));

        // Add framework services.
        services.AddMvc();
    }
    private readonly MyDbContext _context;

    public SearchController(MyDbContext context)
    {
        _context = context;
    }