2011-10-31 179 views
5

我正在創建WCF Web API服務。我的問題是有些方法返回200/OK響應,但標題和正文是空的。WCF Web服務:響應爲200/ok,但響應正文爲空

在設置我的Web服務時,我創建了一個ADO.NET實體數據模型。當我添加代碼生成項目時,我選擇了ADO.NET DbContext生成器。在Model.tt文檔中,我將HashSet和ICollection更改爲List。我建立了我的網站。

它曾經是,當我編碼的方法返回實體的列表(如在Northwind數據庫中的List<Customer>List<Employee>),它工作正常。隨着時間的推移,我無法返回任何這些列表,並且只能抓取一個實體。現在,它已經到了我可以返回List<string>List<int>的地步,但不是任何實體的列表或實例。當我嘗試獲得List<AnyEntity>時,響應爲200/OK,但響應標頭和主體爲空。

我試過使用調試器和Firefox的Web控制檯。使用FF的WC,我只能得到一個「未定義」的狀態碼。我不確定該從哪裏出發。

編輯:在試圖從數據庫中獲取所有領域,我這樣做:

[WebGet(UriTemplate = "areas")] 
public List<a1Areas> AllAreas() 
{ 
    return context.a1Areas.ToList(); 
} 

我將不勝感激用於調試這個任何更多的方法。提前致謝。

找到了答案,謝謝Merlyn!

在我的Global.asax文件中,我忘了註釋掉兩行代理代理和處理我的上下文對象。代碼如下:

void Application_BeginRequest(object sender, EventArgs e) 
{ 
    var context = new AssignmentEntities(); 
    context.Configuration.ProxyCreationEnabled = false; 
    HttpContext.Current.Items["_context"] = context; 
} 

void Application_EndRequest(object sender, EventArgs e) 
{ 
    var context = HttpContext.Current.Items["_context"] as AssignmentEntities; 
    if (context != null) 
    { 
    context.Dispose(); 
    } 
} 
+1

你直接返回實體客戶端?由於實體代理/延遲加載,這可能無法按照您希望的方式工作。你能爲你的服務方法提供一些代碼嗎?另外,Fiddler是調試請求的好工具。從那裏抓取請求和響應數據並粘貼到問題中也可能有所幫助。 –

+0

感謝您的信息! :)你的上下文是如何創建/處置的? –

+0

你好!是的,我將這些實體直接返回給客戶。至於使用Fiddler,響應是: HTTP/1.1 504提琴手 - 接收失敗 Content-Type:text/html; charset = UTF-8 連接:關閉 時間戳:22:49:24.129 ReadResponse()失敗:服務器未返回此請求的響應。 – daoberes

回答