我有一个WebAPI项目,作为前端React + Redux项目的依赖项。
我使用控制器创建了一个代码第一个数据库,公开了一些HttpGet函数,其中函数修改了DbContext数据库。
当app运行Startup.ConfigureServices时,没有调用来自React的webapi调用会出现这个错误:
"语法错误:意外的令牌<在JSON的位置0"
WebAPI来自不同的控制器,它不使用DBcontext的东西工作..
在LinkController中,我有以下内容:
[Route("api/[controller]")]
public class LinkController : Controller
{
[HttpGet("[action]")]
public URLSubmitResult SubmitLink(string url)
{
return new URLSubmitResult() { Success = true };
}
public class URLSubmitResult
{
public bool Success { get; set; }
}
}
private readonly LinkDbContext _context;
public LinkController(LinkDbContext context)
{
_context = context;
}
在ValuesController中有以下内容:
[Route("api/[controller]")]
public class ValuesController : Controller
{
[HttpGet("[action]")]
public URLSubmitResult SubmitLink(string url)
{
return new URLSubmitResult() { Success = true };
}
public class URLSubmitResult
{
public bool Success { get; set; }
}
public ValuesController()
{
}
如果我去api / link / submitlink这个电话没有发生?url = lol.com但是如果它是api / values / submitlink会怎么样?url = lol.com
无论我在响应中收到的错误是什么,实际问题是api / link / submit链接不会导致调用控制器功能。 最有可能的情况是未定义的结果即将返回,而不是对json进行类型转换。
答案 0 :(得分:0)
所以基本上问题是引用的WebAPI程序集没有为依赖注入添加适当的服务。
在我添加的主项目的Startup.ConfigureServices中:
services.AddDbContext<LinkDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("LinkDBConnectionString")));
与连接字符串(LinkDBConnectionString)一起,依赖注入工作并初始化WebAPI。
从更多的经验来看,我发现这个项目设置并不是我想要的,它将前端与WebAPI分离,包括WebAPI作为对前端的依赖并不是Web的答案
相反,我现在在Visual Studio中将WebAPI作为自己的东西运行,并通过前端调用它。