Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, and please first use the search on the homepage. Provide us with the following info:
- ABP Framework version: v7.3.2
- UI Type: MVC
- Database System: EF Core (MySQL)
- Tiered (for MVC) or Auth Server Separated (for Angular): yes
- Exception message and full stack trace:
[14:28:42 INF] Request starting HTTP/1.1 GET https://localhost:44360/api/cms-kit-public/pages?api-version=1.0 - 0
[14:28:42 INF] Executing endpoint 'Volo.CmsKit.Public.Pages.PagesPublicController.FindDefaultHomePageAsync (Volo.CmsKit.Public.HttpApi)'
[14:28:42 INF] Route matched with {area = "cms-kit", action = "FindDefaultHomePage", controller = "PagesPublic"}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.CmsKit.Contents.PageDto] FindDefaultHomePageAsync() on controller Volo.CmsKit.Public.Pages.PagesPublicController (Volo.CmsKit.Public.HttpApi).
[14:28:43 ERR] ---------- RemoteServiceErrorInfo ----------
{
"code": null,
"message": "An internal error occurred during your request!",
"details": null,
"data": {
"ActivatorChain": "Volo.CmsKit.EntityFrameworkCore.CmsKitDbContext -> λ:Microsoft.EntityFrameworkCore.DbContextOptions`1[[Volo.CmsKit.EntityFrameworkCore.CmsKitDbContext, Volo.CmsKit.EntityFrameworkCore, Version=7.3.2.0, Culture=neutral, PublicKeyToken=null]]"
},
"validationErrors": null
}
[14:28:43 ERR] An exception was thrown while activating Volo.CmsKit.EntityFrameworkCore.CmsKitDbContext -> λ:Microsoft.EntityFrameworkCore.DbContextOptions`1[[Volo.CmsKit.EntityFrameworkCore.CmsKitDbContext, Volo.CmsKit.EntityFrameworkCore, Version=7.3.2.0, Culture=neutral, PublicKeyToken=null]].
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.CmsKit.EntityFrameworkCore.CmsKitDbContext -> λ:Microsoft.EntityFrameworkCore.DbContextOptions`1[[Volo.CmsKit.EntityFrameworkCore.CmsKitDbContext, Volo.CmsKit.EntityFrameworkCore, Version=7.3.2.0, Culture=neutral, PublicKeyToken=null]].
---> Volo.Abp.AbpException: No configuration found for Microsoft.EntityFrameworkCore.DbContext, Microsoft.EntityFrameworkCore, Version=7.0.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60! Use services.Configure<AbpDbContextOptions>(...) to configure it.
at Volo.Abp.EntityFrameworkCore.DependencyInjection.DbContextOptionsFactory.Configure[TDbContext](AbpDbContextOptions options, AbpDbContextConfigurationContext`1 context)
at Volo.Abp.EntityFrameworkCore.DependencyInjection.DbContextOptionsFactory.Create[TDbContext](IServiceProvider serviceProvider)
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters)
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters)
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next)
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next)
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
--- End of inner exception stack trace ---
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt)
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next)
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next)
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt)
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request)
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request)
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request)
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request)
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance)
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters)
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters)
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType)
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
at Volo.Abp.Uow.EntityFrameworkCore.UnitOfWorkDbContextProvider`1.CreateDbContextAsync(IUnitOfWork unitOfWork)
at Volo.Abp.Uow.EntityFrameworkCore.UnitOfWorkDbContextProvider`1.CreateDbContextAsync(IUnitOfWork unitOfWork, String connectionStringName, String connectionString)
at Volo.Abp.Uow.EntityFrameworkCore.UnitOfWorkDbContextProvider`1.GetDbContextAsync()
at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository`2.GetDbSetAsync()
at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository`2.GetListAsync(Expression`1 predicate, Boolean includeDetails, CancellationToken cancellationToken)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Volo.CmsKit.Pages.PageManager.GetHomePageAsync()
at Volo.CmsKit.Public.Pages.PagePublicAppService.FindDefaultHomePageAsync()
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Features.FeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope)
at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at lambda_method1630(Closure, Object)
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
[14:28:43 ERR] ---------- Exception Data ----------
ActivatorChain = Volo.CmsKit.EntityFrameworkCore.CmsKitDbContext -> λ:Microsoft.EntityFrameworkCore.DbContextOptions`1[[Volo.CmsKit.EntityFrameworkCore.CmsKitDbContext, Volo.CmsKit.EntityFrameworkCore, Version=7.3.2.0, Culture=neutral, PublicKeyToken=null]]
- Steps to reproduce the issue:
I use the MicroService-pro template created a solution.
Add CmsKit-Pro Module to product service use abp suite.
Enabled the feature of CmsKit pro in Domain.Shared
GlobalFeatureManager.Instance.Modules.CmsKit(cmsKit =>
{
cmsKit.EnableAll();
});
GlobalFeatureManager.Instance.Modules.CmsKitPro(cmsKitPro =>
{
cmsKitPro.EnableAll();
});
I run the solution, throw exception.
ProductServiceDbContext.cs
[ConnectionStringName(ProductServiceDbProperties.ConnectionStringName)]
public class ProductServiceDbContext : AbpDbContext<ProductServiceDbContext>
{
public DbSet<Product> Products { get; set; }
public ProductServiceDbContext(DbContextOptions<ProductServiceDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.ConfigureProductService();
builder.ConfigureCmsKitPro();
builder.ConfigureCmsKit();
}
}
ProductServiceDbContextFactory.cs
public class ProductServiceDbContextFactory : IDesignTimeDbContextFactory<ProductServiceDbContext>
{
private readonly string _connectionString;
/* This constructor is used when you use EF Core tooling (e.g. Update-Database) */
public ProductServiceDbContextFactory()
{
_connectionString = GetConnectionStringFromConfiguration();
}
public ProductServiceDbContext CreateDbContext(string[] args)
{
ProductServiceEfCoreEntityExtensionMappings.Configure();
var builder = new DbContextOptionsBuilder<ProductServiceDbContext>()
.UseMySql(_connectionString, MySqlServerVersion.LatestSupportedServerVersion, b =>
{
b.MigrationsHistoryTable("__ProductService_Migrations");
});
return new ProductServiceDbContext(builder.Options);
}
private static string GetConnectionStringFromConfiguration()
{
return BuildConfiguration()
.GetConnectionString(ProductServiceDbProperties.ConnectionStringName);
}
private static IConfigurationRoot BuildConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(
Path.Combine(
Directory.GetCurrentDirectory(),
$"..{Path.DirectorySeparatorChar}XTC.BaaSo.ProductService.HttpApi.Host"
)
)
.AddJsonFile("appsettings.json", optional: false);
return builder.Build();
}
}
ProductServiceEntityFrameworkCoreModule.cs
[DependsOn(
typeof(AbpEntityFrameworkCoreMySQLModule),
typeof(AbpEntityFrameworkCoreModule),
typeof(ProductServiceDomainModule)
)]
[DependsOn(typeof(CmsKitProEntityFrameworkCoreModule))]
public class ProductServiceEntityFrameworkCoreModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
ProductServiceEfCoreEntityExtensionMappings.Configure();
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAbpDbContext<ProductServiceDbContext>(options =>
{
/* Remove "includeAllEntities: true" to create
* default repositories only for aggregate roots */
options.AddDefaultRepositories(includeAllEntities: true);
options.AddRepository<Product, EfCoreProductRepository>();
});
context.Services.Configure<AbpDbContextOptions>(options => { });
Configure<AbpDbContextOptions>(options =>
{
options.Configure<ProductServiceDbContext>(c =>
{
c.UseMySQL(b =>
{
b.MigrationsHistoryTable("__ProductService_Migrations");
});
});
});
}
}
26 Answer(s)
-
0
Hi,
You can try:
[ConnectionStringName(ProductServiceDbProperties.ConnectionStringName)] public class ProductServiceDbContext : AbpDbContext<ProductServiceDbContext>, ICmsKitProDbContext, ICmsKitDbContext { public DbSet<Product> Products { get; set; } ....... public ProductServiceDbContext(DbContextOptions<ProductServiceDbContext> options) : base(options) { } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.ConfigureProductService(); builder.ConfigureCmsKitPro(); builder.ConfigureCmsKit(); } }
[DependsOn( typeof(AbpEntityFrameworkCoreMySQLModule), typeof(AbpEntityFrameworkCoreModule), typeof(ProductServiceDomainModule) )] [DependsOn(typeof(CmsKitProEntityFrameworkCoreModule))] public class ProductServiceEntityFrameworkCoreModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { ProductServiceEfCoreEntityExtensionMappings.Configure(); } public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAbpDbContext<ProductServiceDbContext>(options => { options.ReplaceDbContext<ICmsKitDbContext>(); // add this line options.ReplaceDbContext<ICmsKitProDbContext>(); // add this line /* Remove "includeAllEntities: true" to create * default repositories only for aggregate roots */ options.AddDefaultRepositories(includeAllEntities: true); options.AddRepository<Product, EfCoreProductRepository>(); }); context.Services.Configure<AbpDbContextOptions>(options => { }); Configure<AbpDbContextOptions>(options => { options.Configure<ProductServiceDbContext>(c => { c.UseMySQL(b => { b.MigrationsHistoryTable("__ProductService_Migrations"); }); }); }); } }
-
0
Hi, liangshiwei
- add codes follow you
- run
dotnet ef migrations add CMSKit
at ProductService.EntityFrameworkCore - run DbMigrator, throw exception
[12:16:23 ERR] An exception occurred while iterating over the results of a query for context type 'XTC.BaaSo.ProductService.EntityFrameworkCore.ProductServiceDbContext'. MySqlConnector.MySqlException (0x80004005): Table 'BaaSo_Product.CmsBlogs' doesn't exist at MySqlConnector.Core.ServerSession.ReceiveReplyAsyncAwaited(ValueTask`1 task) in
-
0
I saw the code of migrations, but not found nothing about CmsBlogs
using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace XTC.BaaSo.ProductService.Migrations { /// <inheritdoc /> public partial class CMSKit : Migration { /// <inheritdoc /> protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "NewsletterRecords", columns: table => new { ... }, constraints: table => { ... }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "Polls", columns: table => new { ... }, constraints: table => { ... }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "PollUserVotes", columns: table => new { ... }, constraints: table => { ... }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "ShortenedUrls", columns: table => new { ... }, constraints: table => { ... }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "NewsletterPreferences", columns: table => new { ... }, constraints: table => { ... }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateTable( name: "PollOptions", columns: table => new { ... }, constraints: table => { ... }) .Annotation("MySql:CharSet", "utf8mb4"); migrationBuilder.CreateIndex( name: "IX_NewsletterPreferences_NewsletterRecordId", table: "NewsletterPreferences", column: "NewsletterRecordId"); migrationBuilder.CreateIndex( name: "IX_PollOptions_PollId", table: "PollOptions", column: "PollId"); } /// <inheritdoc /> protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "NewsletterPreferences"); migrationBuilder.DropTable( name: "PollOptions"); migrationBuilder.DropTable( name: "PollUserVotes"); migrationBuilder.DropTable( name: "ShortenedUrls"); migrationBuilder.DropTable( name: "NewsletterRecords"); migrationBuilder.DropTable( name: "Polls"); } } }
-
0
and this is my code
ProductServiceDbContext .cs
using Microsoft.EntityFrameworkCore; using XTC.BaaSo.ProductService.Products; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.CmsKit.EntityFrameworkCore; using Volo.CmsKit.Newsletters; using Volo.CmsKit.UrlShorting; using Volo.CmsKit.Polls; using Volo.CmsKit.Comments; using Volo.CmsKit.Users; using Volo.CmsKit.Reactions; using Volo.CmsKit.Ratings; using Volo.CmsKit.Tags; using Volo.CmsKit.Pages; using Volo.CmsKit.Blogs; using Volo.CmsKit.MediaDescriptors; using Volo.CmsKit.Menus; using Volo.CmsKit.GlobalResources; namespace XTC.BaaSo.ProductService.EntityFrameworkCore; [ConnectionStringName(ProductServiceDbProperties.ConnectionStringName)] public class ProductServiceDbContext : AbpDbContext<ProductServiceDbContext>, ICmsKitProDbContext, ICmsKitDbContext { public DbSet<Product> Products { get; set; } public DbSet<NewsletterRecord> NewsletterRecords { get; set; } public DbSet<NewsletterPreference> NewsletterPreferences { get; set; } public DbSet<ShortenedUrl> ShortenedUrls { get; set; } public DbSet<Poll> Polls { get; set; } public DbSet<PollUserVote> PollUserVotes { get; set; } public DbSet<PollOption> PollOptions { get; set; } public DbSet<Comment> Comments { get; set; } public DbSet<CmsUser> User { get; set; } public DbSet<UserReaction> Reactions { get; set; } public DbSet<Rating> Ratings { get; set; } public DbSet<Tag> Tags { get; set; } public DbSet<EntityTag> EntityTags { get; set; } public DbSet<Page> Pages { get; set; } public DbSet<Blog> Blogs { get; set; } public DbSet<BlogPost> BlogPosts { get; set; } public DbSet<BlogFeature> BlogFeatures { get; set; } public DbSet<MediaDescriptor> MediaDescriptors { get; set; } public DbSet<MenuItem> MenuItems { get; set; } public DbSet<GlobalResource> GlobalResources { get; set; } public ProductServiceDbContext(DbContextOptions<ProductServiceDbContext> options) : base(options) { } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.ConfigureProductService(); builder.ConfigureCmsKitPro(); builder.ConfigureCmsKit(); } }
ProductServiceEntityFrameworkCoreModule.cs
using Microsoft.Extensions.DependencyInjection; using XTC.BaaSo.ProductService.Products; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.MySQL; using Volo.Abp.Modularity; using Volo.CmsKit.EntityFrameworkCore; namespace XTC.BaaSo.ProductService.EntityFrameworkCore; [DependsOn( typeof(AbpEntityFrameworkCoreMySQLModule), typeof(AbpEntityFrameworkCoreModule), typeof(ProductServiceDomainModule) )] [DependsOn(typeof(CmsKitProEntityFrameworkCoreModule))] public class ProductServiceEntityFrameworkCoreModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { ProductServiceEfCoreEntityExtensionMappings.Configure(); } public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAbpDbContext<ProductServiceDbContext>(options => { options.ReplaceDbContext<ICmsKitDbContext>(); options.ReplaceDbContext<ICmsKitProDbContext>(); /* Remove "includeAllEntities: true" to create * default repositories only for aggregate roots */ options.AddDefaultRepositories(includeAllEntities: true); options.AddRepository<Product, EfCoreProductRepository>(); }); Configure<AbpDbContextOptions>(options => { options.Configure<ProductServiceDbContext>(c => { c.UseMySQL(b => { b.MigrationsHistoryTable("__ProductService_Migrations"); }); }); }); } }
-
0
Hi,
Could you share a simple project to reproduce the problem with me? shiwei.liang@volosoft.com I will check it. thanks.
-
0
OK, I sended.
-
0
-
0
-
0
Hi
I will check it.
-
0
-
0
Cool, resolved !
But is it possible not to modify the AdministrationService? In my product architecture, CmsKit will be offered as a separate MicroService like as ProductService. AdministrationService will do not reference other modules. If possible, I would like to resolve it in the ProductService.
-
0
Hi,
Unfortunately, you have to add it. The CMS module is kind of special, Its permissions need to check the global features. And
AdministrationService
is responsible for permission checking, the global feature must be enabled for it.The
Volo.CmsKit.Pro.Domain.Shared
is a shared project, it's okay to share between different services. -
0
Well, I will include all the pre-built modules in AdministrationService. So, which modules need do this at https://commercial.abp.io/modules?
I have another question, how to include cms in publicweb? Is there documentation for this?
-
0
Well, I will include all the pre-built modules in AdministrationService. So, which modules need do this at https://commercial.abp.io/modules
Currently only Cms-kit module.
I have another question, how to include cms in publicweb? Is there documentation for this?
You can add the
Volo.CmsKit.Pro.Public.Web
andVolo.CmsKit.Pro.Public.HttpApi.Client
package to the public web project. (also add the module dependencies)Update the public web gateway configuration to forward requests to the product service.
-
0
I closed the features of CmsKit, system crashed. I must delete all databases and migrate again.
Is there a way to reopen these features about CmsKit? Or not allowing users to close these?
CmsKitService
[18:16:51 INF] Route matched with {area = "cms-kit", action = "FindBySlug", controller = "PagesPublic"}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.CmsKit.Contents.PageDto] FindBySlugAsync(System.String) on controller Volo.CmsKit.Public.Pages.PagesPublicController (Volo.CmsKit.Public.HttpApi). [18:16:51 WRN] ---------- RemoteServiceErrorInfo ---------- { "code": "Volo.Feature:010003", "message": "Required features are not enabled. At least one of these features must be enabled: CmsKit.PageEnable", "details": null, "data": { "FeatureNames": "CmsKit.PageEnable" }, "validationErrors": null } [18:16:51 WRN] Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
Web
[18:16:50 INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy [18:16:50 INF] Executing handler method XTC.BaaSo.Web.Pages.IndexModel.OnGet - ModelState is Valid [18:16:50 INF] Executed handler method OnGet, returned result Microsoft.AspNetCore.Mvc.RazorPages.PageResult. [18:16:50 ERR] An exception was thrown while deserializing the token. Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException: The antiforgery token could not be decrypted. ---> System.Security.Cryptography.CryptographicException: The key {02049ad8-7d73-44b0-8795-e7b42d02cee1} was not found in the key ring. For more information go to http://aka.ms/dataprotectionwarning at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus& status) at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(Byte[] protectedData) at Microsoft.AspNetCore.Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken) --- End of inner exception stack trace --- at Microsoft.AspNetCore.Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken) at Microsoft.AspNetCore.Antiforgery.DefaultAntiforgery.GetCookieTokenDoesNotThrow(HttpContext httpContext) [18:16:50 INF] Bundling __bundles/LeptonX.Global.9325FB768F9C0093DC4664395D730921.css (17 files) [18:16:50 INF] > Minified /libs/abp/core/abp.css (1331 bytes -> 868 bytes) [18:16:50 INF] > Minified /libs/@fortawesome/fontawesome-free/css/all.css (73577 bytes -> 53572 bytes) [18:16:50 INF] > Minified /libs/@fortawesome/fontawesome-free/css/v4-shims.css (41312 bytes -> 33344 bytes) [18:16:50 INF] > Minified /libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css (54850 bytes -> 43189 bytes) [18:16:50 INF] > Minified /libs/datatables.net-bs5/css/dataTables.bootstrap5.css (13491 bytes -> 11874 bytes) [18:16:50 INF] > Minified /libs/bootstrap-daterangepicker/daterangepicker.css (8069 bytes -> 6378 bytes) [18:16:50 INF] > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css (266 bytes -> 214 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/libs/bootstrap-icons/font/bootstrap-icons.css (74827 bytes -> 57860 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/css/js-bundle.css (34690 bytes -> 30518 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/css/layout-bundle.css (251958 bytes -> 247161 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/css/abp-bundle.css (3870 bytes -> 3025 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/css/font-bundle.css (117 bytes -> 116 bytes) [18:16:50 INF] > Minified /global-styles.css (348 bytes -> 279 bytes) [18:16:50 INF] Bundled __bundles/LeptonX.Global.9325FB768F9C0093DC4664395D730921.css (542070 bytes) [18:16:50 INF] Start processing HTTP request GET https://localhost:44380/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [18:16:50 INF] Sending HTTP request GET https://localhost:44380/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [18:16:50 INF] Received HTTP response headers after 64.8629ms - 200 [18:16:50 INF] End processing HTTP request after 65.0538ms - 200 [18:16:50 INF] Start processing HTTP request GET https://localhost:44380/api/abp/application-localization?CultureName=en&OnlyDynamics=True&api-version=1.0 [18:16:50 INF] Sending HTTP request GET https://localhost:44380/api/abp/application-localization?CultureName=en&OnlyDynamics=True&api-version=1.0 [18:16:50 INF] Received HTTP response headers after 42.4769ms - 200 [18:16:50 INF] End processing HTTP request after 42.6202ms - 200 [18:16:50 INF] Start processing HTTP request GET https://localhost:44380/api/cms-kit-public/menu-items?api-version=1.0 [18:16:50 INF] Sending HTTP request GET https://localhost:44380/api/cms-kit-public/menu-items?api-version=1.0 [18:16:51 INF] Received HTTP response headers after 897.3606ms - 403 [18:16:51 INF] End processing HTTP request after 897.6537ms - 403 [18:16:51 INF] Executed page /Index in 1549.3604ms [18:16:51 INF] Executed endpoint '/Index' [18:16:51 ERR] An unhandled exception has occurred while executing the request. Volo.Abp.Http.Client.AbpRemoteCallException: Forbidden at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.ThrowExceptionForResponseAsync(HttpResponseMessage response) at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.RequestAsync(ClientProxyRequestContext requestContext) at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.RequestAsync[T](ClientProxyRequestContext requestContext) at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.RequestAsync[T](String methodName, ClientProxyRequestTypeValue arguments) at Volo.CmsKit.Public.Menus.ClientProxies.MenuItemPublicClientProxy.GetListAsync() at Volo.CmsKit.Public.Web.Menus.CmsKitPublicMenuContributor.ConfigureMainMenuAsync(MenuConfigurationContext context) at Volo.CmsKit.Public.Web.Menus.CmsKitPublicMenuContributor.ConfigureMenuAsync(MenuConfigurationContext context) at Volo.Abp.UI.Navigation.MenuManager.GetInternalAsync(String name) at Volo.Abp.UI.Navigation.MenuManager.GetAsync(String[] menuNames) at Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Navigation.MenuViewModelProvider.GetMenuViewModelAsync() at Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Themes.LeptonX.Components.SideMenu.MainMenu.MainMenuViewComponent.InvokeAsync() at Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentInvoker.InvokeAsyncCore(ObjectMethodExecutor executor, Object component, ViewComponentContext context) at Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentInvoker.InvokeAsync(ViewComponentContext context) at Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentInvoker.InvokeAsync(ViewComponentContext context) at Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentHelper.InvokeCoreAsync(ViewComponentDescriptor descriptor, Object arguments) at Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpViewComponentHelper.InvokeAsync(Type componentType, Object arguments) at V1baMV6YmQplw0X98PH.UPIMWT6TrLmYa5A0bLn.ExecuteAsync() at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreAsync(String partialViewName, Object model, ViewDataDictionary viewData, TextWriter writer) at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.PartialAsync(String partialViewName, Object model, ViewDataDictionary viewData) at s9pw74fNUuN4Eq9OcZh.SMIS7FfDqF8eAAIYmQI.<>c__DisplayClass21_0.zesArhS6o8NoyemU221.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync() at s9pw74fNUuN4Eq9OcZh.SMIS7FfDqF8eAAIYmQI.ExecuteAsync() at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderLayoutAsync(ViewContext context, ViewBufferTextWriter bodyWriter) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeResultFilters>g__Awaited|28_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Volo.Abp.AspNetCore.Serilog.AbpSerilogMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Volo.Abp.AspNetCore.MultiTenancy.MultiTenancyMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at Volo.Abp.AspNetCore.Security.AbpSecurityHeadersMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Volo.Abp.AspNetCore.Tracing.AbpCorrelationIdMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|8_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task) [18:16:51 INF] Executing endpoint '/Public/CmsKit/Pages/Index' [18:16:51 INF] Route matched with {page = "/Public/CmsKit/Pages/Index", action = "", controller = "", area = ""}. Executing page /Public/CmsKit/Pages/Index [18:16:51 INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy [18:16:51 INF] Executing handler method Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Pages.IndexModel.OnGetAsync - ModelState is Valid [18:16:51 INF] Start processing HTTP request GET https://localhost:44380/api/cms-kit-public/pages/Error?api-version=1.0 [18:16:51 INF] Sending HTTP request GET https://localhost:44380/api/cms-kit-public/pages/Error?api-version=1.0 [18:16:51 INF] Received HTTP response headers after 71.9637ms - 403 [18:16:51 INF] End processing HTTP request after 72.1478ms - 403 [18:16:51 ERR] ---------- RemoteServiceErrorInfo ---------- { "code": "Forbidden", "message": "Forbidden", "details": null, "data": null, "validationErrors": null }
-
0
-
0
Hi,
Of course, Remove
Volo.CmsKit.Pro.Web
package fromProductService.Web
and install theVolo.CmsKit.Pro.Admin.Web
package. -
0
-
0
Hi,
Can you add the gateway config to
PublicWebGateway
?{ "ServiceKey": "Product Service", "ServiceDns": "https://product.baaso.dev", "DownstreamPathTemplate": "/api/cms-kit/{everything}", "DownstreamScheme": "https", "DownstreamHostAndPorts": [ { "Host": "localhost", "Port": 44360 } ], "UpstreamPathTemplate": "/api/cms-kit/{everything}", "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] }, { "ServiceKey": "Product Service", "ServiceDns": "https://product.baaso.dev", "DownstreamPathTemplate": "/api/cms-kit-public/{everything}", "DownstreamScheme": "https", "DownstreamHostAndPorts": [ { "Host": "localhost", "Port": 44360 } ], "UpstreamPathTemplate": "/api/cms-kit-public/{everything}", "UpstreamHttpMethod": [ "Put", "Delete", "Get", "Post" ] }
PS, you may need to add NPM package to web and public web projects and use the
abp install-libs
to restore package -
0
It was very difficult, and now everything is working properly :)
Thank you very much, and I have a last question.
The page component has content, script, stytle, so the script support abp api? If support, how to use it?
-
0
The page component has content, script, stytle, so the script support abp api? If support, how to use it?
Sorry, Can you explain it in detail? thanks.
-
0
The page component has content, script, stytle, so the script support abp api? If support, how to use it?
Sorry, Can you explain it in detail? thanks.
I will try slowly in the future.
-
0
I closed the features of CmsKit, system crashed. I must delete all databases and migrate again.
Is there a way to reopen these features about CmsKit? Or not allowing users to close these?
CmsKitService
[18:16:51 INF] Route matched with {area = "cms-kit", action = "FindBySlug", controller = "PagesPublic"}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.CmsKit.Contents.PageDto] FindBySlugAsync(System.String) on controller Volo.CmsKit.Public.Pages.PagesPublicController (Volo.CmsKit.Public.HttpApi). [18:16:51 WRN] ---------- RemoteServiceErrorInfo ---------- { "code": "Volo.Feature:010003", "message": "Required features are not enabled. At least one of these features must be enabled: CmsKit.PageEnable", "details": null, "data": { "FeatureNames": "CmsKit.PageEnable" }, "validationErrors": null } [18:16:51 WRN] Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
Web
[18:16:50 INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy [18:16:50 INF] Executing handler method XTC.BaaSo.Web.Pages.IndexModel.OnGet - ModelState is Valid [18:16:50 INF] Executed handler method OnGet, returned result Microsoft.AspNetCore.Mvc.RazorPages.PageResult. [18:16:50 ERR] An exception was thrown while deserializing the token. Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException: The antiforgery token could not be decrypted. ---> System.Security.Cryptography.CryptographicException: The key {02049ad8-7d73-44b0-8795-e7b42d02cee1} was not found in the key ring. For more information go to http://aka.ms/dataprotectionwarning at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus& status) at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(Byte[] protectedData) at Microsoft.AspNetCore.Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken) --- End of inner exception stack trace --- at Microsoft.AspNetCore.Antiforgery.DefaultAntiforgeryTokenSerializer.Deserialize(String serializedToken) at Microsoft.AspNetCore.Antiforgery.DefaultAntiforgery.GetCookieTokenDoesNotThrow(HttpContext httpContext) [18:16:50 INF] Bundling __bundles/LeptonX.Global.9325FB768F9C0093DC4664395D730921.css (17 files) [18:16:50 INF] > Minified /libs/abp/core/abp.css (1331 bytes -> 868 bytes) [18:16:50 INF] > Minified /libs/@fortawesome/fontawesome-free/css/all.css (73577 bytes -> 53572 bytes) [18:16:50 INF] > Minified /libs/@fortawesome/fontawesome-free/css/v4-shims.css (41312 bytes -> 33344 bytes) [18:16:50 INF] > Minified /libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css (54850 bytes -> 43189 bytes) [18:16:50 INF] > Minified /libs/datatables.net-bs5/css/dataTables.bootstrap5.css (13491 bytes -> 11874 bytes) [18:16:50 INF] > Minified /libs/bootstrap-daterangepicker/daterangepicker.css (8069 bytes -> 6378 bytes) [18:16:50 INF] > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css (266 bytes -> 214 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/libs/bootstrap-icons/font/bootstrap-icons.css (74827 bytes -> 57860 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/css/js-bundle.css (34690 bytes -> 30518 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/css/layout-bundle.css (251958 bytes -> 247161 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/css/abp-bundle.css (3870 bytes -> 3025 bytes) [18:16:50 INF] > Minified /Themes/LeptonX/Global/side-menu/css/font-bundle.css (117 bytes -> 116 bytes) [18:16:50 INF] > Minified /global-styles.css (348 bytes -> 279 bytes) [18:16:50 INF] Bundled __bundles/LeptonX.Global.9325FB768F9C0093DC4664395D730921.css (542070 bytes) [18:16:50 INF] Start processing HTTP request GET https://localhost:44380/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [18:16:50 INF] Sending HTTP request GET https://localhost:44380/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 [18:16:50 INF] Received HTTP response headers after 64.8629ms - 200 [18:16:50 INF] End processing HTTP request after 65.0538ms - 200 [18:16:50 INF] Start processing HTTP request GET https://localhost:44380/api/abp/application-localization?CultureName=en&OnlyDynamics=True&api-version=1.0 [18:16:50 INF] Sending HTTP request GET https://localhost:44380/api/abp/application-localization?CultureName=en&OnlyDynamics=True&api-version=1.0 [18:16:50 INF] Received HTTP response headers after 42.4769ms - 200 [18:16:50 INF] End processing HTTP request after 42.6202ms - 200 [18:16:50 INF] Start processing HTTP request GET https://localhost:44380/api/cms-kit-public/menu-items?api-version=1.0 [18:16:50 INF] Sending HTTP request GET https://localhost:44380/api/cms-kit-public/menu-items?api-version=1.0 [18:16:51 INF] Received HTTP response headers after 897.3606ms - 403 [18:16:51 INF] End processing HTTP request after 897.6537ms - 403 [18:16:51 INF] Executed page /Index in 1549.3604ms [18:16:51 INF] Executed endpoint '/Index' [18:16:51 ERR] An unhandled exception has occurred while executing the request. Volo.Abp.Http.Client.AbpRemoteCallException: Forbidden at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.ThrowExceptionForResponseAsync(HttpResponseMessage response) at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.RequestAsync(ClientProxyRequestContext requestContext) at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.RequestAsync[T](ClientProxyRequestContext requestContext) at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase`1.RequestAsync[T](String methodName, ClientProxyRequestTypeValue arguments) at Volo.CmsKit.Public.Menus.ClientProxies.MenuItemPublicClientProxy.GetListAsync() at Volo.CmsKit.Public.Web.Menus.CmsKitPublicMenuContributor.ConfigureMainMenuAsync(MenuConfigurationContext context) at Volo.CmsKit.Public.Web.Menus.CmsKitPublicMenuContributor.ConfigureMenuAsync(MenuConfigurationContext context) at Volo.Abp.UI.Navigation.MenuManager.GetInternalAsync(String name) at Volo.Abp.UI.Navigation.MenuManager.GetAsync(String[] menuNames) at Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Navigation.MenuViewModelProvider.GetMenuViewModelAsync() at Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Themes.LeptonX.Components.SideMenu.MainMenu.MainMenuViewComponent.InvokeAsync() at Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentInvoker.InvokeAsyncCore(ObjectMethodExecutor executor, Object component, ViewComponentContext context) at Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentInvoker.InvokeAsync(ViewComponentContext context) at Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentInvoker.InvokeAsync(ViewComponentContext context) at Microsoft.AspNetCore.Mvc.ViewComponents.DefaultViewComponentHelper.InvokeCoreAsync(ViewComponentDescriptor descriptor, Object arguments) at Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpViewComponentHelper.InvokeAsync(Type componentType, Object arguments) at V1baMV6YmQplw0X98PH.UPIMWT6TrLmYa5A0bLn.ExecuteAsync() at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreAsync(String partialViewName, Object model, ViewDataDictionary viewData, TextWriter writer) at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.PartialAsync(String partialViewName, Object model, ViewDataDictionary viewData) at s9pw74fNUuN4Eq9OcZh.SMIS7FfDqF8eAAIYmQI.<>c__DisplayClass21_0.zesArhS6o8NoyemU221.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.SetOutputContentAsync() at s9pw74fNUuN4Eq9OcZh.SMIS7FfDqF8eAAIYmQI.ExecuteAsync() at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderLayoutAsync(ViewContext context, ViewBufferTextWriter bodyWriter) at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode) at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeResultFilters>g__Awaited|28_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Volo.Abp.AspNetCore.Serilog.AbpSerilogMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Volo.Abp.AspNetCore.MultiTenancy.MultiTenancyMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at Volo.Abp.AspNetCore.Security.AbpSecurityHeadersMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Volo.Abp.AspNetCore.Tracing.AbpCorrelationIdMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|8_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task) [18:16:51 INF] Executing endpoint '/Public/CmsKit/Pages/Index' [18:16:51 INF] Route matched with {page = "/Public/CmsKit/Pages/Index", action = "", controller = "", area = ""}. Executing page /Public/CmsKit/Pages/Index [18:16:51 INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy [18:16:51 INF] Executing handler method Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Pages.IndexModel.OnGetAsync - ModelState is Valid [18:16:51 INF] Start processing HTTP request GET https://localhost:44380/api/cms-kit-public/pages/Error?api-version=1.0 [18:16:51 INF] Sending HTTP request GET https://localhost:44380/api/cms-kit-public/pages/Error?api-version=1.0 [18:16:51 INF] Received HTTP response headers after 71.9637ms - 403 [18:16:51 INF] End processing HTTP request after 72.1478ms - 403 [18:16:51 ERR] ---------- RemoteServiceErrorInfo ---------- { "code": "Forbidden", "message": "Forbidden", "details": null, "data": null, "validationErrors": null }
How to resolve this issue?
-
0
Hi,
It looks like a problem. you can try:
public class MyCmsKitPublicMenuContributor : IMenuContributor { public async Task ConfigureMenuAsync(MenuConfigurationContext context) { if (context.Menu.Name == CmsKitMenus.Public) { await ConfigureMainMenuAsync(context); } } private async Task ConfigureMainMenuAsync(MenuConfigurationContext context) { var featureCheck = context.ServiceProvider.GetRequiredService<IFeatureChecker>(); if (GlobalFeatureManager.Instance.IsEnabled<MenuFeature>() && await featureCheck.IsEnabledAsync(CmsKitFeatures.MenuEnable)) { var menuAppService = context.ServiceProvider.GetRequiredService<IMenuItemPublicAppService>(); var menuItems = await menuAppService.GetListAsync(); if (!menuItems.IsNullOrEmpty()) { foreach (var menuItemDto in menuItems.Where(x => x.ParentId == null && x.IsActive)) { AddChildItems(menuItemDto, menuItems, context.Menu); } } } } private void AddChildItems(MenuItemDto menuItem, List<MenuItemDto> source, IHasMenuItems parent = null) { var applicationMenuItem = CreateApplicationMenuItem(menuItem); foreach (var item in source.Where(x => x.ParentId == menuItem.Id && x.IsActive)) { AddChildItems(item, source, applicationMenuItem); } parent?.Items.Add(applicationMenuItem); } private ApplicationMenuItem CreateApplicationMenuItem(MenuItemDto menuItem) { return new ApplicationMenuItem( menuItem.DisplayName, menuItem.DisplayName, menuItem.Url, menuItem.Icon, menuItem.Order, menuItem.Target, menuItem.ElementId, menuItem.CssClass ); } }
Configure<AbpNavigationOptions>(options => { options.MenuContributors.RemoveAll(x => x.GetType() == typeof(CmsKitPublicMenuContributor)); options.MenuContributors.Add(new MyCmsKitPublicMenuContributor());; });
-
0
We will fix it in the next patch version: https://github.com/abpframework/abp/issues/17866