2012-12-16 73 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