When changing users (via impersonation), I'm getting this error. I haven't changed any code related to Chat or Users.
ERROR 2018-07-20 08:50:23,484 [75 ] Mvc.ExceptionHandling.AbpExceptionFilter - Cannot access a disposed object.
Object name: 'UserManagerProxy'.
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'UserManagerProxy'.
at Microsoft.AspNetCore.Identity.UserManager1.ThrowIfDisposed() at Microsoft.AspNetCore.Identity.UserManager
1.FindByIdAsync(String userId)
at Castle.Proxies.Invocations.UserManager1_FindByIdAsync.InvokeMethodOnTarget() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.DynamicProxy.AbstractInvocation.Proceed() at Castle.Proxies.UserManagerProxy.FindByIdAsync(String userId) at Friendships.Cache.UserFriendsCache.<>c__DisplayClass15_0.<GetUserFriendsCacheItemInternal>b__5() in UserFriendsCache.cs:line 188 at System.Threading.Tasks.Task
1.InnerInvoke()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of stack trace from previous location where exception was thrown ---
at Nito.AsyncEx.Synchronous.TaskExtensions.WaitAndUnwrapException[TResult](Task1 task) at System.Threading.Tasks.ContinuationResultTaskFromResultTask
2.InnerInvoke()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of stack trace from previous location where exception was thrown ---
at Nito.AsyncEx.Synchronous.TaskExtensions.WaitAndUnwrapException[TResult](Task1 task) at Nito.AsyncEx.AsyncContext.Run[TResult](Func
1 action)
at Friendships.Cache.UserFriendsCache.GetUserFriendsCacheItemInternal(UserIdentifier userIdentifier) in UserFriendsCache.cs:line 188
at Castle.Proxies.Invocations.UserFriendsCache_GetUserFriendsCacheItemInternal.InvokeMethodOnTarget()
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Github\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 68
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at Castle.Proxies.UserFriendsCacheProxy.GetUserFriendsCacheItemInternal(UserIdentifier userIdentifier)
at Friendships.Cache.UserFriendsCache.<>c__DisplayClass8_0.<GetCacheItem>b__0(String f) in UserFriendsCache.cs:line 46
at Abp.Runtime.Caching.CacheExtensions.<>c__DisplayClass3_02.<Get>b__0(String k) in D:\Github\aspnetboilerplate\src\Abp\Runtime\Caching\CacheExtensions.cs:line 28 at Abp.Runtime.Caching.CacheBase.Get(String key, Func
2 factory) in D:\Github\aspnetboilerplate\src\Abp\Runtime\Caching\CacheBase.cs:line 66
at Abp.Runtime.Caching.CacheExtensions.Get[TKey,TValue](ICache cache, TKey key, Func`2 factory) in D:\Github\aspnetboilerplate\src\Abp\Runtime\Caching\CacheExtensions.cs:line 28
at Friendships.Cache.UserFriendsCache.GetCacheItem(UserIdentifier userIdentifier) in UserFriendsCache.cs:line 44
at Castle.Proxies.Invocations.UserFriendsCache_GetCacheItem.InvokeMethodOnTarget()
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at Abp.Domain.Uow.UnitOfWorkInterceptor.PerformSyncUow(IInvocation invocation, UnitOfWorkOptions options) in D:\Github\aspnetboilerplate\src\Abp\Domain\Uow\UnitOfWorkInterceptor.cs:line 68
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at Castle.Proxies.UserFriendsCacheProxy.GetCacheItem(UserIdentifier userIdentifier)
at Chat.ChatAppService.GetUserChatFriendsWithSettings() in ChatAppService.cs:line 47
at lambda_method(Closure , Object , Object[] )
at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextExceptionFilterAsync()
INFO 2018-07-20 08:50:23,486 [75 ] .Mvc.Infrastructure.ObjectResultExecutor - Executing ObjectResult, writing value of type 'Abp.Web.Models.AjaxResponse'.
INFO 2018-07-20 08:50:23,486 [75 ] ore.Mvc.Internal.ControllerActionInvoker - Executed action Chat.ChatAppService.GetUserChatFriendsWithSettings in 145.0636ms
INFO 2018-07-20 08:50:23,486 [75 ] soft.AspNetCore.Hosting.Internal.WebHost - Request finished in 154.1466ms 500 application/json; charset=utf-8
INFO 2018-07-20 08:52:08,665 [chdog] Hangfire.Server.ServerWatchdog - 1 servers were removed due to timeout
Boilerplate code where this is happening:
[UnitOfWork]
protected virtual UserWithFriendsCacheItem GetUserFriendsCacheItemInternal(UserIdentifier userIdentifier)
{
var tenancyName = userIdentifier.TenantId.HasValue
? _tenantCache.GetOrNull(userIdentifier.TenantId.Value)?.TenancyName
: null;
using (_unitOfWorkManager.Current.SetTenantId(userIdentifier.TenantId))
{
var friendCacheItems =
(from friendship in _friendshipRepository.GetAll()
join chatMessage in _chatMessageRepository.GetAll() on
new { UserId = userIdentifier.UserId, TenantId = userIdentifier.TenantId, TargetUserId = friendship.FriendUserId, TargetTenantId = friendship.FriendTenantId, ChatSide = ChatSide.Receiver } equals
new { UserId = chatMessage.UserId, TenantId = chatMessage.TenantId, TargetUserId = chatMessage.TargetUserId, TargetTenantId = chatMessage.TargetTenantId, ChatSide = chatMessage.Side } into chatMessageJoined
where friendship.UserId == userIdentifier.UserId
select new FriendCacheItem
{
FriendUserId = friendship.FriendUserId,
FriendTenantId = friendship.FriendTenantId,
State = friendship.State,
FriendUserName = friendship.FriendUserName,
FriendTenancyName = friendship.FriendTenancyName,
FriendProfilePictureId = friendship.FriendProfilePictureId,
UnreadMessageCount = chatMessageJoined.Count(cm => cm.ReadState == ChatMessageReadState.Unread)
}).ToList();
//********* this is the _userManager that throws the exception ***************************//
var user = AsyncHelper.RunSync(() => _userManager.FindByIdAsync(userIdentifier.UserId.ToString()));
return new UserWithFriendsCacheItem
{
TenantId = userIdentifier.TenantId,
UserId = userIdentifier.UserId,
TenancyName = tenancyName,
UserName = user.UserName,
ProfilePictureId = user.ProfilePictureId,
Friends = friendCacheItems
};
}
}
Anyone seen something like this?