C#Web API中来自控制器的空JSON响应

C#Web API中来自控制器的空JSON响应,c#,json,asp.net-web-api,linq-to-entities,C#,Json,Asp.net Web Api,Linq To Entities,我正在学习用C#构建web API 我正在测试我的控制器,但是我得到一个空的JSON响应 这是我的控制器 public class ClassInfoController : ApiController { private ClassRepository classRepo = new ClassRepository(); public IList<string> getClassListByTerm(string termID) { Lis

我正在学习用C#构建web API

我正在测试我的控制器,但是我得到一个空的
JSON
响应

这是我的控制器

public class ClassInfoController : ApiController
{
    private ClassRepository classRepo = new ClassRepository();

    public IList<string> getClassListByTerm(string termID)
    {
        List<string> classList = classRepo.getClassListByTerm(termID);

        return classList;
    }
我从我期望的repository类获得结果


为什么会出现此问题?

尝试向API方法添加属性

[HttpGet]
public List<string> getClassListByTerm([FromUri]string termID)
[HttpGet]
公共列表getClassListByTerm([FromUri]字符串termID)
或者您可以使用另一个类对象作为请求数据。 我是说

公共类TermData
{
//如果nessassry[JsonProperty(“TermId”)]
公共字符串TermId{get;set;}
}
[HttpGet]
公共列表getClassListByTerm([FromUri]TermData)

尝试向API方法添加属性

[HttpGet]
public List<string> getClassListByTerm([FromUri]string termID)
[HttpGet]
公共列表getClassListByTerm([FromUri]字符串termID)
或者您可以使用另一个类对象作为请求数据。 我是说

公共类TermData
{
//如果nessassry[JsonProperty(“TermId”)]
公共字符串TermId{get;set;}
}
[HttpGet]
公共列表getClassListByTerm([FromUri]TermData)

我的问题是Visual Studio中的一个Web API项目提供的自动API文档告诉我应该使用以下命令从浏览器调用控制器:
http://localhost:51520/api/ClassInfo?termID={316a}
。我不知道,这意味着
{}
保留在
316a
-我认为它们就像方法签名中用于接收参数的括号,但我假设它们用于将
列表
/
json
传递给方法(在本例中不相关)。这意味着当我的存储库查询运行时,它没有返回任何内容,因为我没有查找字符串
{316a}

如果我使用以下地址调用API
http://localhost:51520/api/ClassInfo?termID=316a
之所以有效,是因为字符串
316a
被传递到查询


谢谢大家。

我的问题是Visual Studio中的一个Web API项目提供的自动API文档告诉我应该使用以下命令从浏览器调用控制器:
http://localhost:51520/api/ClassInfo?termID={316a}
。我不知道,这意味着
{}
保留在
316a
-我认为它们就像方法签名中用于接收参数的括号,但我假设它们用于将
列表
/
json
传递给方法(在本例中不相关)。这意味着当我的存储库查询运行时,它没有返回任何内容,因为我没有查找字符串
{316a}

如果我使用以下地址调用API
http://localhost:51520/api/ClassInfo?termID=316a
之所以有效,是因为字符串
316a
被传递到查询


谢谢大家。

我有一个继承自DynamicObject的类,该类只返回空JSON(而XML似乎正确返回)

在我的例子中,我能够删除DynamicObject继承,JSON序列化开始工作

//didn't serialize to json, but xml worked
public MyClass : DynamicObject, IMyClass { //... }

//works for json and xml
public MyClass : IMyClass { //... }

不幸的是,我没有机会探究为什么
DynamicObject
会破坏JSON序列化。

我有一个从DynamicObject继承的类,该类只会返回空的JSON(而XML似乎正确返回)

在我的例子中,我能够删除DynamicObject继承,JSON序列化开始工作

//didn't serialize to json, but xml worked
public MyClass : DynamicObject, IMyClass { //... }

//works for json and xml
public MyClass : IMyClass { //... }

不幸的是,我没有机会探究为什么
DynamicObject
会破坏JSON序列化。

假设向
termID
提供相同的输入,这只会得出结论,即客户端没有正确地向您发送数据。如果您向我们展示客户端代码+ajax调用,我们可以进一步帮助您?在getClassListByTerm中设置断点,是否到达?返回带有数据的硬编码列表:新列表{“是”,“这是数据”,“xD”};根据您的解释,我认为Web API没有什么问题。您能否提供有关如何测试控制器的更多详细信息?测试控制器时,您是否检查了传递的termID?请仔细检查测试项目和Web Api项目的连接字符串?我在方法体中硬编码以下内容时获得数据:
List classList=new List{“test”,“testData”}
返回类列表
假设向
termID
提供了相同的输入,这只会导致您的客户端没有以正确的方式正确地向您发送数据。如果您向我们展示客户端代码+ajax调用,我们可以进一步帮助您?在getClassListByTerm中设置断点,是否到达?返回带有数据的硬编码列表:新列表{“是”,“这是数据”,“xD”};根据您的解释,我认为Web API没有什么问题。您能否提供有关如何测试控制器的更多详细信息?测试控制器时,您是否检查了传递的termID?请仔细检查测试项目和Web Api项目的连接字符串?我在方法体中硬编码以下内容时获得数据:
List classList=new List{“test”,“testData”}
返回类列表
//didn't serialize to json, but xml worked
public MyClass : DynamicObject, IMyClass { //... }

//works for json and xml
public MyClass : IMyClass { //... }