我试图在MCTS 70-516书中运行一个例子,更具体地说是第470页上的例子。
要求/创建内容:
Northwind
数据库CustOrderHist
存储过程然后创建以下.svc
文件:
using System.Data.Services;
using System.Linq;
using System.ServiceModel.Web;
namespace WcfDataServicesLibrary
{
public class NorthwindService : DataService<NorthWindEntities>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*",EntitySetRights.All);
config.SetServiceOperationAccessRule("*",ServiceOperationRights.All);
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
}
[WebGet]
public IQueryable<CustOrderHist_Result> CustOrderHist(string customerID)
{
using(NorthWindEntities db = new NorthWindEntities())
{
return CustOrderHist(customerID).ToList().AsQueryable();
}
}
}
}
然后我尝试按照文本中的说明运行它:
"http://localhost:65363/NorthwindService.svc/CustOrderHist?customerID='ALFKI'"
然后我收到错误消息StackOwerFlowException。
为什么?
我尝试了以下内容:
没有变化。同样的结果。
我有一台32位机器(Windows Vista)。所以64位不是问题。
非常感谢任何线索。
答案 0 :(得分:1)
CustOrderHist方法中有递归
尝试以下方法:
[WebGet]
public IQueryable<CustOrderHist_Result> CustOrderHist(string customerID)
{
using(NorthWindEntities db = new NorthWindEntities())
{
return db.CustOrderHist(customerID).ToList().AsQueryable();
}
}