2012-12-16 74 views
0

我试图运行在MCTS 70-516书为例,具体如下示例470WCF数据服务 - 存储过程 - StackOverflowException

需求/制造什么:

  • 所述Northwind数据库
  • 空ASP.Net幅溶液
  • 含有的所有表的EDMX和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位不是问题。

任何线索将不胜感激。

回答

1

有一个在CustOrderHist方法递归

尝试以下操作:

[WebGet] 
    public IQueryable<CustOrderHist_Result> CustOrderHist(string customerID) 
    { 
     using(NorthWindEntities db = new NorthWindEntities()) 
     { 
      return db.CustOrderHist(customerID).ToList().AsQueryable(); 
     } 
    } 
+0

感谢。我试过分贝。首先,但无法让它编译。谢谢 !!!我看到了反复问题。 – Haguna

+0

愚蠢的错误,我没有注意到缺乏可变的参考。但无论如何,再次感谢您指出! – Haguna