WebAPI没有初始化?

时间:2017-08-28 22:28:48

标签: c# entity-framework reactjs asp.net-web-api react-redux

我有一个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进行类型转换。

1 个答案:

答案 0 :(得分:0)

所以基本上问题是引用的WebAPI程序集没有为依赖注入添加适当的服务。

在我添加的主项目的Startup.ConfigureServices中:

 services.AddDbContext<LinkDbContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("LinkDBConnectionString")));

与连接字符串(LinkDBConnectionString)一起,依赖注入工作并初始化WebAPI。

从更多的经验来看,我发现这个项目设置并不是我想要的,它将前端与WebAPI分离,包括WebAPI作为对前端的依赖并不是Web的答案

相反,我现在在Visual Studio中将WebAPI作为自己的东西运行,并通过前端调用它。