[英]How to solve Cannot access a disposed object in asp.net core 2.1?
我有一個項目asp.net core 2.1。 dbcontext創建查詢時發生錯誤。
我創建帶有檢查URL路徑的IRouteConstraint。
public bool Match(HttpContext httpContext, IRouter route, string parameterName,
RouteValueDictionary values, RouteDirection routeDirection)
{
var routeSlug1 = (string)values["contentCategory"];
var routeSlug2 = (string)values["content"];
bool slugMatch = false;
if (!string.IsNullOrEmpty(routeSlug1) && !string.IsNullOrEmpty(routeSlug2))
{
//var Data = db.CmsContent.FirstOrDefault(x => x.Tag == routeSlug2 && x.ContentCategory.Tag == routeSlug1); //.ToList() //The error is here!!!!
var Data = db.CmsContent.ToList(); //The error is here!!!!
if (Data != null)
{
return true;
}
}
return slugMatch;
}
System.ObjectDisposedException:'無法訪問已處置的對象。
在Microsoft.AspNetCore.Routing.RouteConstraintMatcher.Match(IDictionary)的E:\\ Cms \\ Infrastructure \\ RouteConstraints.cs:第35行的Cms.Infrastructure.CmsContentConstraint.Match(HttpContext httpContext,IRouter路由,字符串parameterName,RouteValueDictionary值,RouteDirection routeDirection)處`2約束,位於Microsoft.AspNetCore.Routing.RouteBase.RouteAsync(RouteContext上下文),位於Microsoft.AspNetCore.Routing.RouteBase.RouteAsync(RouteContext上下文),位於RoutePath上,位於Microsoft.AspNetCore.Routing.RouteCollection.d__10.MoveNext()處。
不要重用DbContext
...沒必要,無論如何連接都會被緩存,並且不會給您帶來明顯的好處。 但是,它可能會帶來一些問題
將其放在using
語句中
using(var db = new DbContext())
{
// much better and wont be disposed
db.CmsContent...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.