C# ODataV4 Web API XML响应嵌套太深

C# ODataV4 Web API XML响应嵌套太深,c#,xml,odata,asp.net-web-api2,C#,Xml,Odata,Asp.net Web Api2,我正在使用WebAPI和odatav4构建一个odataweb服务 假设我有两个实体想要通过我的服务公开:学生和教师 现在一个学生有一个老师作为其属性之一,而一个老师有很多学生 我能够使用以下技巧让服务返回XML: IList <ODataMediaTypeFormatter> oDataFormatters = ODataMediaTypeFormatters.Create(); config.Formatters.InsertRange(0, oDataFormatters);

我正在使用WebAPI和odatav4构建一个odataweb服务

假设我有两个实体想要通过我的服务公开:学生和教师

现在一个学生有一个老师作为其属性之一,而一个老师有很多学生

我能够使用以下技巧让服务返回XML:

IList <ODataMediaTypeFormatter> oDataFormatters = ODataMediaTypeFormatters.Create();
config.Formatters.InsertRange(0, oDataFormatters);
然而,XML格式化程序似乎想要格式化所有内容。我的意思是,当我要求一位老师时,我也会要求他们的学生。因此,出现了一个无限循环的问题,因为每个学生都有一个老师,老师有学生,等等。我得到了一个堆栈溢出异常

我已经尝试了这里提出的解决方案,但我仍然不知何故得到了一个堆栈溢出异常

为了解决这个问题,我必须基本上切断循环,说老师不再有学生了,这样循环就被切断了,堆栈溢出就不会再发生了。但是,这将删除作为教师导航属性的学生


是否有一种方法可以告诉格式化程序只响应其属性(不包括导航属性),而不通过使用属性[IgnoreDataMember]完全忽略该属性,即不要嵌套?

也许此链接有帮助:您能给我们提供更详细的示例代码吗?