C# asp.net核心Web API控制器停止响应,出现错误500
我正在为搜索功能制作PoC。我已经有一段时间没有做web API了,现在我从和其他人开始,更改连接数据库所需的内容等等 这是在周五起作用的事情之一,而在周一早上就不起作用了 我已经创建了一个web API项目,其中已经搭建了一个valuesController。所以我创建了一个名为searchController的新控制器。我编写了一个简单返回字符串的方法,如下所示: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
[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;
}