/// <summary> /// Removes all grants of a give type for a given subject id and client id combination. /// </summary> /// <param name="subjectId">The subject identifier.</param> /// <param name="clientId">The client identifier.</param> /// <param name="type">The type.</param> /// <returns></returns> public Task RemoveAllAsync(string subjectId, string clientId, string type) { var persistedGrants = PersistedGrants.FindAllByTypeAndSubjectIdAndClientId(type, subjectId, type); _logger.LogDebug("removing {persistedGrantCount} persisted grants from database for subject {subjectId}, clientId {clientId}, grantType {persistedGrantType}", persistedGrants.Count, subjectId, clientId, type); try { persistedGrants.Delete(); } catch (Exception ex) { _logger.LogInformation("exception removing {persistedGrantCount} persisted grants from database for subject {subjectId}, clientId {clientId}, grantType {persistedGrantType}: {error}", persistedGrants.Count, subjectId, clientId, type, ex.Message); } return(Task.FromResult(0)); }