Activities of "devchase321"

Hi,

I ran the queries you requested. Here are the results.

  1. AbpResourcePermissionGrants

The Consume permission exists in AbpResourcePermissionGrants with TenantId = NULL.

Rows found:

  • ProviderName = R ProviderKey = Patient TenantId = NULL ResourceName = Volo.AIManagement.Workspaces.Workspace ResourceKey = 5E45D5C5-AE6A-7604-1A18-3A2151F28514

  • ProviderName = U ProviderKey = 3B23E6FF-AA66-8029-6CA7-3A214C3D575F TenantId = NULL ResourceName = Volo.AIManagement.Workspaces.Workspace ResourceKey = 5E45D5C5-AE6A-7604-1A18-3A2151F28514

  • ProviderName = R ProviderKey = admin TenantId = NULL ResourceName = Volo.AIManagement.Workspaces.Workspace ResourceKey = 5E45D5C5-AE6A-7604-1A18-3A2151F28514

  1. AbpUsers

The logged-in user is:

  • Id = 3B23E6FF-AA66-8029-6CA7-3A214C3D575F
  • UserName = test2
  • TenantId = NULL
  1. AIManagementWorkspaces

The workspace is:

  • Id = 5E45D5C5-AE6A-7604-1A18-3A2151F28514
  • Name = PatientAssistant
  • RequiredPermissionName = NULL

So the ResourceKey in AbpResourcePermissionGrants matches the PatientAssistant workspace Id, and both the user and grants are in host context with TenantId = NULL.

I also confirmed that there is a direct user grant for test2 using ProviderName = U and ProviderKey = test2 user Id.

I will now capture the exact failing API request from the browser Network tab and share it as well. Based on the database rows above, the resource permission seems to be persisted correctly, so I want to understand why the Consume check is still failing for this user.

Answer

https://drive.google.com/file/d/DELETED-inxLleY/view?usp=sharing

here is my app.config.ts

import { provideAbpCore, ReplaceableComponentsService, withOptions } from '@abp/ng.core'; import { provideAbpOAuth } from '@abp/ng.oauth'; import { provideSettingManagementConfig } from '@abp/ng.setting-management/config'; import { provideFeatureManagementConfig } from '@abp/ng.feature-management'; import { provideAbpThemeShared, withValidationBluePrint } from '@abp/ng.theme.shared'; import { provideIdentityConfig } from '@volo/abp.ng.identity/config'; import { provideCommercialUiConfig } from '@volo/abp.commercial.ng.ui/config'; import { provideAccountAdminConfig } from '@volo/abp.ng.account/admin/config'; import { provideAccountPublicConfig } from '@volo/abp.ng.account/public/config'; import { provideGdprConfig, withCookieConsentOptions } from '@volo/abp.ng.gdpr/config'; import { provideAuditLoggingConfig } from '@volo/abp.ng.audit-logging/config'; import { provideLanguageManagementConfig } from '@volo/abp.ng.language-management/config'; import { registerLocale } from '@volo/abp.ng.language-management/locale'; import { provideFileManagementConfig } from '@volo/abp.ng.file-management/config'; import { provideChatConfig } from '@volo/abp.ng.chat/config'; import { provideSaasConfig } from '@volo/abp.ng.saas/config'; import { provideTextTemplateManagementConfig } from '@volo/abp.ng.text-template-management/config'; import { provideOpeniddictproConfig } from '@volo/abp.ng.openiddictpro/config'; import { provideThemeBasicConfig } from '@abp/ng.theme.basic'; import { provideLogo, withEnvironmentOptions } from "@abp/ng.theme.shared"; import { ApplicationConfig, inject, provideAppInitializer } from '@angular/core'; import { provideAnimations } from '@angular/platform-browser/animations'; import { provideRouter } from '@angular/router'; import { provideHttpClient, withInterceptors } from '@angular/common/http'; import { CustomChatComponent } from './chat/custom-chat.component'; import { environment } from '../environments/environment'; import { APP_ROUTES } from './app.routes'; import { APP_ROUTE_PROVIDER } from './route.provider'; import { FOOTER_PROVIDER } from './footer/footer.config'; import { provideAIManagementConfig } from '@volo/abp.ng.ai-management/config';

export const appConfig: ApplicationConfig = { providers: [ provideRouter(APP_ROUTES), APP_ROUTE_PROVIDER, FOOTER_PROVIDER, provideAppInitializer(() => { inject(ReplaceableComponentsService).add({ component: CustomChatComponent, key: 'Chat.ChatComponent', }); }), provideAnimations(), provideHttpClient( withInterceptors([]) ), provideAbpOAuth(), provideAccountPublicConfig(), provideAbpCore( withOptions({ environment, registerLocaleFn: registerLocale(),

  }),
  
),


provideCommercialUiConfig(),
provideThemeBasicConfig(),
provideAbpThemeShared(
  withValidationBluePrint({
    wrongPassword: 'Please choose 1q2w3E*',
  }),
),
provideLogo(withEnvironmentOptions(environment)),
provideGdprConfig(
  withCookieConsentOptions({
    cookiePolicyUrl: '/gdpr-cookie-consent/cookie',
    privacyPolicyUrl: '/gdpr-cookie-consent/privacy',
  }),
),
provideChatConfig(),

] };

Answer

not help this

[enisn] said: Hi,

Thanks for the details.

Based on the behavior you described, this looks more like a server-side AI Management setup/database issue than an OpenAI API issue.

The main reason is:

  • The Workspaces page first loads AI Management data from your application database.
  • The provider dropdown is populated from provider names registered at application startup.

So when the page throws a generic AbpRemoteCallException and the provider list is also empty, the usual cause is that the AI Management module was added but its database changes and/or startup registration were not completed yet.

In your case, the strongest clue is that the solution was created with --skip-migration --skip-migrator.

Please check these steps:

  1. Create and apply a new EF Core migration after importing Volo.AIManagement.

If the AI Management tables were not created yet, the /api/ai-management/workspaces request will fail with this kind of generic remote call exception.

  1. Make sure Volo.AIManagement.OpenAI is installed on the server startup side of the application, not only in a UI/client project.

The available providers are collected from registered factories at startup. If the OpenAI module is not loaded by the startup application, the provider dropdown will stay empty.

  1. Restart the application after installing the provider package and after applying the migration.
  1. Check the *.HttpApi.Host logs while opening the Workspaces page.

The real exception should be written there. If the migration is missing, you will typically see the actual SQL/table-related error on the host side.

So the first thing we recommend is:

  • add/apply the migration,
  • restart HttpApi.Host,
  • open the Workspaces page again,
  • then verify whether OpenAI appears in the provider dropdown.

If the problem still continues after that, please share these details:

  • the exact exception from the HttpApi.Host log,
  • whether the AI Management tables were created successfully,
  • and which project you added Volo.AIManagement.OpenAI to.

Best regards,

ABP Support Team

i already added Migration and run that migration on Database and i also install Volo.AIManagement.OpenAI this package on server Side and here is log of HttpApi.Host 2026-04-07 10:33:09.145 +00:00 [ERR] Failed executing DbCommand (67ms) [Parameters=[@BFPAowQuR='?' (Size = 4000)], CommandType='"Text"', CommandTimeout='30'] SELECT TOP(2) [a].[Id], [a].[ApplicationName], [a].[SupportedProviders] FROM [AIManagementApplicationAIProviders] AS [a] WHERE [a].[ApplicationName] = @BFPAowQuR 2026-04-07 10:33:09.184 +00:00 [ERR] An exception occurred while iterating over the results of a query for context type 'Volo.AIManagement.EntityFrameworkCore.AIManagementDbContext'. Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid object name 'AIManagementApplicationAIProviders'. at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__195_0(Task1 result) at System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() ClientConnectionId:2e865100-2130-45c1-99bd-b87da3a33893 Error Number:208,State:1,Class:16 ClientConnectionId before routing:1f14091e-7caf-426e-91ad-69a85d48c8b4 Routing Destination:dc8127efd63b.tr15377.eastus2-a.worker.database.windows.net,11044 Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid object name 'AIManagementApplicationAIProviders'. at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__195_0(Task1 result) at System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() ClientConnectionId:2e865100-2130-45c1-99bd-b87da3a33893 Error Number:208,State:1,Class:16 ClientConnectionId before routing:1f14091e-7caf-426e-91ad-69a85d48c8b4 Routing Destination:dc8127efd63b.tr15377.eastus2-a.worker.database.windows.net,11044 2026-04-07 10:33:09.237 +00:00 [ERR] An error occurred while updating initial workspaces for application Millennial.HttpApi.Host. Skipping initial workspace update. Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid object name 'AIManagementApplicationAIProviders'. at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__195_0(Task1 result) at System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken) at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository2.FindAsync(Expression1 predicate, Boolean includeDetails, CancellationToken cancellationToken) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.AIManagement.ApplicationWorkspaceProviders.ApplicationAIProviderManager.UpdateProvidersAsync(String applicationName, String[] supportedProviders) at Volo.AIManagement.Workspaces.WorkspaceSaver.SaveAsync(String applicationName, IEnumerable1 supportedProviders, IEnumerable1 workspaces) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed) at Volo.AIManagement.Workspaces.InitialWorkspaceUpdater.UpdateAsync() and here is my db Table

this answer is not helpful

Answer

[maliming] said: hi

This is a bug introduced in ABP v10.x — IFaqGroupPublicAppService was added to FaqViewComponent's constructor but the corresponding HTTP controller and client proxy were never added. A fix has been submitted to the ABP team.

Temporary workaround:

Step 1 — Add this controller to your HttpApi or API Host project:

[RequiresFeature(CmsKitProFeatures.FaqEnable)]

[RequiresGlobalFeature(typeof(FaqFeature))]

[RemoteService(Name = CmsKitProCommonRemoteServiceConsts.RemoteServiceName)]

[Area(CmsKitProCommonRemoteServiceConsts.ModuleName)]

[Route("api/cms-kit-public/faq-group")]

public class FaqGroupPublicController : CmsKitProCommonController, IFaqGroupPublicAppService

{

protected IFaqGroupPublicAppService FaqGroupPublicAppService { get; }
public FaqGroupPublicController(IFaqGroupPublicAppService faqGroupPublicAppService)
{
    FaqGroupPublicAppService = faqGroupPublicAppService;
}
[HttpGet]
[Route("by-name")]
public Task<FaqGroupDto> GetGroupByNameAsync(string name)
    => FaqGroupPublicAppService.GetGroupByNameAsync(name);

}

Step 2 — If your application is tiered, also add this to your Web project:

[Dependency(ReplaceServices = true)]

[ExposeServices(typeof(IFaqGroupPublicAppService), typeof(FaqGroupPublicClientProxy))]

public partial class FaqGroupPublicClientProxy : ClientProxyBase

{

public virtual async Task<FaqGroupDto> GetGroupByNameAsync(string name)
{
    return await RequestAsync<FaqGroupDto>(nameof(GetGroupByNameAsync), new ClientProxyRequestTypeValue
    {
        { typeof(string), name }
    });
}

}

If your application is not tiered (single host), Step 1 alone is sufficient.

You can remove these files once the official fix is released.

Thanks.

[Dependency(ReplaceServices = true)] [ExposeServices(typeof(IFaqGroupPublicAppService), typeof(FaqGroupPublicClientProxy))] public partial class FaqGroupPublicClientProxy : ClientProxyBase<IFaqGroupPublicAppService>, IFaqGroupPublicAppService { public virtual async Task<FaqGroupDto> GetGroupByNameAsync(string name) { return await RequestAsync<FaqGroupDto>(nameof(GetGroupByNameAsync), new ClientProxyRequestTypeValue { { typeof(string), name } }); } } i add this in my web.public project but when i run project it throw exception Volo.Abp.AbpException HResult=0x80131500 Message=The API description of the Volo.CmsKit.Public.Faqs.IFaqGroupPublicAppService.GetGroupByNameAsync method was not found! Source=Volo.Abp.Http.Client StackTrace: at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase1.BuildHttpProxyClientProxyContext(String methodName, ClientProxyRequestTypeValue arguments) at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase1.<RequestAsync>d__37`1.MoveNext() at Millennial.Web.Public.FaqGroupPublicClientProxy.

Answer

[AI-Bot] said:

  • In ABP 10.x the FAQ widget parameters are groupName and sectionName. Your dynamic widget usage is passing sectionName, but the docs example shows a mismatch (name = "Development"). This typically results in the widget endpoint failing and the UI showing “This part of content couldn’t be loaded.” after the upgrade.

  • Fix your widget invocation by using sectionName (not sectionName="Faq" with an old/incorrect parameter name mapping like name), and ensure the values match an existing FAQ Group + Section in CMS Kit:

    If you use the Dynamic Widget tag helper:

[Widget Type="Faq" groupName="Client" sectionName="Faq"] 

If you render it directly (recommended to verify quickly):

@await Component.InvokeAsync( 
      typeof(FaqViewComponent), 
      new 
      { 
          groupName = "Client", 
          sectionName = "Faq" 
      } 
  ) 
  • After changing it, restart the app and hard refresh the page. The widget content is loaded via an internal widget endpoint; if that endpoint throws due to parameter mismatch, you’ll only see the generic “couldn’t be loaded” message on the UI.

  • If it still fails after this change, the issue is no longer the parameters; it will be a server-side exception inside the widget endpoint. In that case, check the server logs for the request that serves the widget content (it will show the real exception).


  • https://abp.io/docs/latest/modules/cms-kit-pro/faq
  • https://abp.io/docs/latest/framework/ui/mvc-razor-pages/widgets

This response was generated by AI. If it didn’t solve your problem, feel free to post a new answer — our support team will jump in to help you soon.

@await Component.InvokeAsync( typeof(FaqViewComponent), new { groupName = "Client", sectionName = "Faq" } ) when i use like this i throw this exception DependencyResolutionException: None of the constructors found on type 'Volo.CmsKit.Pro.Web.Pages.Public.Shared.Components.Faqs.FaqViewComponent' can be invoked with the available services and parameters: Cannot resolve parameter 'Volo.CmsKit.Public.Faqs.IFaqGroupPublicAppService faqGroupPublicAppService' of constructor 'Void .ctor(Volo.CmsKit.Public.Faqs.IFaqSectionPublicAppService, Volo.CmsKit.Public.Faqs.IFaqGroupPublicAppService)'

Thank you!

[maliming] said: hi

I tested this url and it works

https://auth.redacted.com/.well-known/openid-configuration

https://auth.redacted.com/account/login

Please can you redact all identifiable information in your replies? like this: https://auth.redacted.com/account/login

Showing 1 to 10 of 59 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.8.0-preview. Updated on October 08, 2026, 12:23
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.