我正在創建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();
}
}
你直接返回實體客戶端?由於實體代理/延遲加載,這可能無法按照您希望的方式工作。你能爲你的服務方法提供一些代碼嗎?另外,Fiddler是調試請求的好工具。從那裏抓取請求和響應數據並粘貼到問題中也可能有所幫助。 –
感謝您的信息! :)你的上下文是如何創建/處置的? –
你好!是的,我將這些實體直接返回給客戶。至於使用Fiddler,響應是: HTTP/1.1 504提琴手 - 接收失敗 Content-Type:text/html; charset = UTF-8 連接:關閉 時間戳:22:49:24.129 ReadResponse()失敗:服務器未返回此請求的響應。 – daoberes