0

我正在尝试运行 MCTS 70-516 书中的示例,更具体地说是第 470 页上的示例。

要求/创建什么:

  • Northwind数据库_
  • 一个空的 ASP.Net Web 解决方案
  • CustOrderHist包含所有表和存储过程的 edmx

然后创建以下.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位不是问题。

任何线索将不胜感激。

4

1 回答 1

1

CustOrderHist 方法中有递归

尝试以下操作:

    [WebGet]
    public IQueryable<CustOrderHist_Result> CustOrderHist(string customerID)
    {
        using(NorthWindEntities db = new NorthWindEntities())
        {
            return db.CustOrderHist(customerID).ToList().AsQueryable();
        }
    }
于 2012-12-16T14:19:50.307 回答