【发布时间】:2017-08-28 22:28:47
【问题描述】:
我有一个 WebAPI 项目,它作为前端 React+Redux 项目的依赖项。
我创建了一个代码优先数据库,其中的控制器公开了一些 HttpGet 函数,这些函数修改了 DbContext 数据库。
当应用程序运行时,未调用 Startup.ConfigureServices 并且来自 React 的 webapi 调用给我这个错误:
"SyntaxError: Unexpected token
来自不使用 DBcontext 东西的不同控制器的 WebAPI 函数虽然可以工作..
在 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。
【问题讨论】:
-
这个错误发生在哪里?很可能是您尝试传递给 api 函数的数据有问题。
-
可能您将其发送为 Xml 格式,而 Web Api 正试图反序列化为 Json
-
不,不是这样,正如我所说的对另一个不依赖 dbcontext 的控制器的类似调用(使用字符串参数)工作正常,初始化函数没有被调用 dbcontext 依赖的控制器。
-
我看不出 dbcontext 如何影响反序列化。这似乎是巧合。错误清楚地表明内容的第一个标记是
-
正如我所提到的,两个控制器之间的调用及其主体是相似的,并且无论响应中发生什么,webapi 函数本身都不会在其中一个控制器中调用。 React 中响应正文中的任何问题都是由于未调用 WebApi 函数这一事实造成的,因此尝试追赶是一条红鲱鱼。我已经编辑了我的问题,以便更清楚地说明这一点,因为人们显然不相信我。
标签: c# entity-framework reactjs asp.net-web-api react-redux