我想創建一個WebApi使用實體框架從數據庫中讀取數據。使用WebAPI中的實體框架的表上的GET調用異常
我的數據模型設計是這樣的:
我已經加入SportsController
名爲的WebAPI控制器是這樣的:
public class SportsController : ApiController
{
public HttpResponseMessage Get()
{
try
{
using (MyLeagueDBEntities dbEntity = new MyLeagueDBEntities())
{
return Request.CreateResponse(HttpStatusCode.OK, dbEntity.tbl_Sports.ToList());
}
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex);
}
}
}
上調用來自瀏覽器的請求,我的WebAPI控制器GET方法,我得到如下所示的異常。但在調試模式下,我可以看到它能夠從數據庫中獲取數據而沒有任何錯誤,但是一旦控件移出該方法,它就會拋出以下異常。
異常詳細信息:
「消息」:「發生錯誤」。,
「ExceptionMessage」:「在‘ObjectContent`1’型未能序列化內容類型的響應人體的應用/ JSON;字符集= UTF-8' 「,
」ExceptionType「:」 System.InvalidOperationException」
「堆棧跟蹤」:空,
「的InnerException」:{ 「消息」: 「發生錯誤」。 ,
「ExceptionMessage」:「在System.Da上從'tbl_Tournament'獲取值時出錯ta.Entity.DynamicProxies.tbl_Sports_7461105FEAC4FCCBDED534FCE44707AF9C7DFE1E4AD69B1E7E3777FBB953F184' 「,
」ExceptionType。「:」 Newtonsoft.Json.JsonSerializationException 「
」堆棧跟蹤「:」
在Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(目標對象)\ r \ n
在Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter作家,對象的值,JsonContainerContract合同,JsonProperty構件,JsonProperty屬性,JsonContract & memberContract,對象& memberValue個)\ r \ n
在Newtonsoft.Json.Serialization .JsonSerializerInternalWriter.SerializeObject(JsonWriter作家,對象值,JsonOb JSONProperty成員JsonContainerContract collectionContract JsonProperty containerProperty)\ r \ n>在Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer,Object value,JsonContract valueContract,JsonProperty成員,JsonContainerContract containerContract,JsonProperty containerProperty)\ r \ n
在Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter作家,IEnumerable的值,JsonArrayContract合同,JsonProperty構件,JsonContainerContract collectionContract,JsonProperty containerProperty個)\ r \ n
在Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter作家,對象值,JsonContract valueContract,JsonProperty成員,JsonContainerContract containerContract,JsonProperty containerProperty)\ r \ n
在Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter,對象的值,類型的objectType個)\ r \ n
在Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter,對象的值,類型的objectType個)\ r \ n
at System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type,Object value,Stream writeStream,Encoding effectiveEncoding)\ r \ n
at System.Net.Http.Formatting.JsonMediaTypeFormatter。WriteToStream(Type type,Object value,Stream writeStream,Encoding effectiveEncoding)\ r \ n
at System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStream(Type type,Object value,Stream writeStream,HttpContent content)\ r \ n
在System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.WriteToStreamAsync(類型類型,對象的值,流writeStream,HttpContent內容,transportContext transportContext,的CancellationToken的CancellationToken個)\ r \ n從先前位置堆棧跟蹤的結束,其中的例外是拋出
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\ r \ n
在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務任務個)\ r \ n
在System.Web.Http.WebHost.HttpControllerHandler.d__1b.MoveNext() 「」的InnerException「:{」 消息「:」發生了錯誤「,
」ExceptionMessage「:」ObjectContext實例已被處置,不能再用於需要連接的操作。「,
」ExceptionType「:」System.ObjectDisposedException「,
「StackTrace」:「
at System.Data.Entity.Core.Objects.ObjectContext.get_Connection()\ r \ n
在System.Data.Entity.Core.Objects.ObjectQuery1.GetResults(Nullable
1 forMergeOption個)\ r \ n
在System.Data.Entity.Core.Objects.ObjectQuery1.Execute(MergeOption mergeOption)\r\n
1.Load(列表
at System.Data.Entity.Core.Objects.DataClasses.EntityCollection1 collection, MergeOption mergeOption)\r\n
1.Load(MergeOption mergeOption) \ r \ n
at System.Data.Entity.Core.Objects.DataClasses.EntityCollection
at System.Data.Entity.Core.Objects.DataClasses.RelatedEnd.DeferredLoad()\ r \ n
at System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior.LoadProperty [TItem]( TItem propertyValue,String relationshipName,String targetRoleName,Boolean mustBeNull,Object wrapperObject)\ r \ n
at System.Data.Entity.Core.Objects.Internal.LazyLoadBehavior。 <> c__DisplayClass7`2.b__1(TProxy代理,TItem項個)\ r \ n
在System.Data.Entity.DynamicProxies.tbl_Sports_7461105FEAC4FCCBDED534FCE44707AF9C7DFE1E4AD69B1E7E3777FBB953F184.get_tbl_Tournament(個)\ r \ n
在Gettbl_Tournament(對象)\ r \ n
在Newtonsoft.Json.Serialization.DynamicValueProvider.GetValue(對象 目標)「}}}
我新的實體框架和的WebAPI,一個請求幫助我解決這個問題。
PFB快照,錯誤消息記錄在fidd上LER。目前越來越HTTP 500內部服務器錯誤,
謝謝隊友。正如所建議的,我使用下面的行從DB讀取數據之前禁用了惰性負載,它確實解決了我的問題。 dbEntity.Configuration.LazyLoadingEnabled = false; – Manju