【发布时间】:2014-12-04 12:02:02
【问题描述】:
这是一个问题。 我们有一个简单的 web api 控制器,里面有一个类
public class CheckApiController : ApiController
{
public class Test
{
public int Id { get; set; }
public string SomeString { get; set; }
/*public Test ComplexType
{
get
{
return new Test()
{
SomeString = "wtf"
};
}
}*/
}
public List<Test> Get()
{
return new List<Test>(){
new Test(){Id = 1,SomeString = "1st string"},
new Test(){Id=2,SomeString = "2nd string"}
};
}
public HttpResponseMessage Post(Test testclass)
{
//do something
var response = Request.CreateResponse(HttpStatusCode.Created);
return response;
}
}
当我签入提琴手 Get 和 Post 方法时,一切正常。但是当我取消注释Test 中的属性ComplexType 并重试POST 方法将响应巨大的500 内部服务器错误:
堆栈不足,无法继续安全地执行程序。这可能是由于调用堆栈上有太多函数或堆栈上的函数使用了太多堆栈空间。
所以它的简单 StackOverflow 异常。那么为什么这个错误发生在没有设置器的字段上,或者我如何在绑定中忽略它?
【问题讨论】:
-
你在 Post 方法中做其他事情吗?
-
是的。但是没关系,因为调试器没有进入这个方法,并且响应返回内部服务器错误。你在你的机器上试过那个代码吗?
标签: asp.net-mvc asp.net-mvc-4 post asp.net-web-api asp.net-web-api2