Activities of "aalgrou"

I am currently working on customizing the layout of Lepton-x in Angular, and I require some assistance to achieve the desired layout. Below are the specifications for the layout modification:

Top Header:

Logo: Positioned on the left-hand side. Search Bar: Located in the center of the header. Language Setting: Positioned on the right-hand side of the header. Profile Picture: Also located on the right-hand side, next to the language setting. Left Side Menu:

Expandable Menu: The left side menu should be expandable/collapsible. Contains Main Menu Items: The menu should contain primary menu items. Sub Menu: Sub-menus should be displayed when a main menu item is clicked.

If possible, I would greatly appreciate any guidance, resources, or code snippets that could assist me in implementing this layout within the Lepton-x framework in Angular. I followed a video on youtube how to customize the theme but I didn't work with me. also I downloaded the source code of the theme, but I didn't find where or who to change the layout.

  • ABP Framework version: v8
  • UI Type: Angular
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): no

hi

This error is about the Data Protection.

https://learn.microsoft.com/en-us/aspnet/core/security/data-protection/introduction?view=aspnetcore-7.0 https://learn.microsoft.com/en-us/aspnet/core/security/data-protection/using-data-protection?view=aspnetcore-8.0&source=recommendations

Your application can't Unprotect your cookies. Does your redis work?

private void ConfigureDataProtection( 
    ServiceConfigurationContext context, 
    IConfiguration configuration, 
    IWebHostEnvironment hostingEnvironment) 
{ 
    var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName("Hudoor"); 
    if (!hostingEnvironment.IsDevelopment()) 
    { 
        var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]!); 
        dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, "Hudoor-Protection-Keys"); 
    } 
} 

yes i check Redis is work fine

hi

Please try to clear the cookies or try to sign in on the incognito mode.

i try still same error.

[15:47:50 INF] Hosting environment: Production [15:47:50 INF] Content root path: D:\project\HudoorV10\Hudoor\src\Hudoor.Web [15:47:50 INF] Request starting HTTP/1.1 GET https://localhost:5000/health-status - - [15:47:50 INF] Request starting HTTP/2 GET https://localhost:5000/ - - [15:47:51 INF] Identity.Application was not authenticated. Failure message: Unprotect ticket failed [15:47:51 INF] Executing endpoint 'Health checks' [15:47:51 INF] Request finished HTTP/2 GET https://localhost:5000/ - - - 302 0 - 927.4907ms [15:47:51 INF] Request starting HTTP/2 GET https://localhost:5000/Error?httpStatusCode=404 - - [15:47:51 INF] Identity.Application was not authenticated. Failure message: Unprotect ticket failed

hi

It also works on a production/release environment.

in my pc

i can user page login but still error when run my pages

http://localhost:5000/health-status {"status":"Healthy","totalDuration":"00:00:00.0038398","entries":{"Hudoor DbContext Check":{"data":{},"description":"Could connect to database and get record.","duration":"00:00:00.0036132","status":"Healthy","tags":["database"]}}}


[14:48:15 INF] Saving external localizations...
[14:48:15 INF] Initialized all ABP modules.
[14:48:15 INF] Initializing UI Database
[14:48:16 INF] Saving healthchecks configuration to database
[14:48:16 INF] Now listening on: http://localhost:5000
[14:48:16 INF] Start processing HTTP request GET http://localhost:5000/health-status
[14:48:16 INF] Sending HTTP request GET http://localhost:5000/health-status
[14:48:16 INF] Application started. Press Ctrl+C to shut down.
[14:48:16 INF] Hosting environment: Production
[14:48:16 INF] Content root path: D:\project\HudoorV10\Hudoor\src\Hudoor.Web\bin\Release\net7.0\publish
[14:48:16 INF] Request starting HTTP/1.1 GET http://localhost:5000/health-status - -
[14:48:16 INF] Completed to save external localizations.
[14:48:16 INF] Executing endpoint 'Health checks'
[14:48:18 INF] Executed endpoint 'Health checks'
[14:48:18 INF] Received HTTP response headers after 1690.6305ms - 200
[14:48:18 INF] End processing HTTP request after 1699.3597ms - 200
[14:48:18 INF] Request finished HTTP/1.1 GET http://localhost:5000/health-status - - - 200 - application/json 1612.5396ms
[14:48:28 INF] Start processing HTTP request GET http://localhost:5000/health-status
[14:48:28 INF] Sending HTTP request GET http://localhost:5000/health-status
[14:48:28 INF] Request starting HTTP/1.1 GET http://localhost:5000/health-status - -
[14:48:28 INF] Executing endpoint 'Health checks'
[14:48:28 INF] Executed endpoint 'Health checks'
[14:48:28 INF] Request finished HTTP/1.1 GET http://localhost:5000/health-status - - - 200 - application/json 18.3664ms
[14:48:28 INF] Received HTTP response headers after 22.027ms - 200
[14:48:28 INF] End processing HTTP request after 22.1556ms - 200
[14:48:36 INF] Request starting HTTP/1.1 GET http://localhost:5000/ - -
[14:48:36 INF] Identity.Application was not authenticated. Failure message: Unprotect ticket failed
[14:48:36 INF] Request finished HTTP/1.1 GET http://localhost:5000/ - - - 302 0 - 24.9955ms
[14:48:36 INF] Request starting HTTP/1.1 GET http://localhost:5000/Error?httpStatusCode=404 - -
[14:48:36 INF] Identity.Application was not authenticated. Failure message: Unprotect ticket failed
[14:48:36 INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers.ErrorController.Index (Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared)'
[14:48:36 INF] Route matched with {action = "Index", controller = "Error", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Index(Int32) on controller Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers.ErrorController (Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared).
[14:48:36 INF] Executing ViewResult, running view ~/Views/Error/404.cshtml.
[14:48:36 INF] Bundling __bundles/Views.Error.DefaultErrorComponent.default.F15FCDEA56EC024E1CDCD86CA6B586D8.css (1 files)
[14:48:36 INF]   > Minified /Views/Error/DefaultErrorComponent/default.css (230 bytes -> 168 bytes)
[14:48:36 INF] Bundled __bundles/Views.Error.DefaultErrorComponent.default.F15FCDEA56EC024E1CDCD86CA6B586D8.css (168 bytes)
[14:48:36 WRN] The cookie 'XSRF-TOKEN' has set 'SameSite=None' and must also set 'Secure'.
[14:48:36 INF] Bundling __bundles/LeptonX.Global.3253AE0A9501A0665DAC7014DA5B2ED8.css (18 files)
[14:48:36 INF]   > Minified /libs/abp/core/abp.css (1331 bytes -> 868 bytes)
[14:48:36 INF]   > Minified /libs/@fortawesome/fontawesome-free/css/all.css (73577 bytes -> 53572 bytes)
[14:48:36 INF]   > Minified /libs/@fortawesome/fontawesome-free/css/v4-shims.css (41312 bytes -> 33344 bytes)
[14:48:36 INF]   > Minified /libs/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css (54850 bytes -> 43189 bytes)
[14:48:36 INF]   > Minified /libs/datatables.net-bs5/css/dataTables.bootstrap5.css (13698 bytes -> 12056 bytes)
[14:48:36 INF]   > Minified /libs/bootstrap-daterangepicker/daterangepicker.css (8069 bytes -> 6378 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-styles.css (266 bytes -> 214 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/date-range-picker/date-range-picker-styles.css (338 bytes -> 293 bytes)
[14:48:36 INF]   > Minified /Themes/LeptonX/Global/side-menu/libs/bootstrap-icons/font/bootstrap-icons.css (74827 bytes -> 57860 bytes)
[14:48:36 INF]   > Minified /Themes/LeptonX/Global/side-menu/css/js-bundle.css (34905 bytes -> 30715 bytes)
[14:48:36 INF]   > Minified /Themes/LeptonX/Global/side-menu/css/layout-bundle.css (33358 bytes -> 28511 bytes)
[14:48:36 INF]   > Minified /Themes/LeptonX/Global/side-menu/css/abp-bundle.css (3870 bytes -> 3025 bytes)
[14:48:36 INF]   > Minified /Themes/LeptonX/Global/side-menu/css/font-bundle.css (117 bytes -> 116 bytes)
[14:48:36 INF]   > Minified /global-styles.css (599 bytes -> 516 bytes)
[14:48:36 INF] Bundled __bundles/LeptonX.Global.3253AE0A9501A0665DAC7014DA5B2ED8.css (324329 bytes)
[14:48:36 INF] Bundling __bundles/LeptonX.Global.36C8711578048293653E8ACF51D760DC.js (37 files)
[14:48:36 INF]   > Minified /libs/abp/core/abp.js (25156 bytes -> 10282 bytes)
[14:48:36 INF]   > Minified /libs/jquery/jquery.js (285314 bytes -> 87931 bytes)
[14:48:36 INF]   > Minified /libs/abp/jquery/abp.jquery.js (13489 bytes -> 5683 bytes)
[14:48:36 INF]   > Minified /libs/jquery-validation/jquery.validate.js (52141 bytes -> 25104 bytes)
[14:48:36 INF]   > Minified /libs/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js (19798 bytes -> 5604 bytes)
[14:48:36 INF]   > Minified /libs/datatables.net/js/jquery.dataTables.js (457594 bytes -> 88790 bytes)
[14:48:36 INF]   > Minified /libs/datatables.net-bs5/js/dataTables.bootstrap5.js (5282 bytes -> 2381 bytes)
[14:48:36 INF]   > Minified /libs/abp/luxon/abp.luxon.js (1361 bytes -> 606 bytes)
[14:48:36 INF]   > Minified /libs/timeago/jquery.timeago.js (7404 bytes -> 4107 bytes)
[14:48:36 INF]   > Minified /libs/bootstrap-daterangepicker/daterangepicker.js (67842 bytes -> 32678 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/ui-extensions.js (10589 bytes -> 3026 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/jquery-extensions.js (5965 bytes -> 2219 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js (3605 bytes -> 1588 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/jquery/widget-manager.js (4790 bytes -> 1752 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js (32618 bytes -> 12605 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/modal-manager.js (7267 bytes -> 2054 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js (21615 bytes -> 6759 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/sweetalert2/abp-sweetalert2.js (3213 bytes -> 1505 bytes)
[14:48:36 INF]   > Minified /libs/abp/aspnetcore-mvc-ui-theme-shared/toastr/abp-toastr.js (951 bytes -> 342 bytes)
[14:48:36 INF]   > Minified /client-proxies/account-proxy.js (14145 bytes -> 9227 bytes)
[14:48:36 INF]   > Minified /Pages/Account/AuthorityDelegation/account-authority-delegation-global.js (6334 bytes -> 2493 bytes)
[14:48:36 INF]   > Minified /Pages/Account/LinkUsers/account-link-user-global.js (4798 bytes -> 2247 bytes)
[14:48:36 INF]   > Minified /Pages/AuditLogs/audit-log-global.js (1123 bytes -> 542 bytes)
[14:48:36 INF]   > Minified /Pages/Abp/MultiTenancy/tenant-switch.js (414 bytes -> 243 bytes)
[14:48:36 INF]   > Minified /Themes/LeptonX/Global/scripts/style-initializer.js (1637 bytes -> 750 bytes)
[14:48:36 INF] Bundled __bundles/LeptonX.Global.36C8711578048293653E8ACF51D760DC.js (922155 bytes)
[14:48:36 INF] Executed ViewResult - view ~/Views/Error/404.cshtml executed in 647.5697ms.
[14:48:36 INF] Executed action Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers.ErrorController.Index (Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared) in 704.2811ms
[14:48:36 INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers.ErrorController.Index (Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared)'
[14:48:36 INF] Request finished HTTP/1.1 GET http://localhost:5000/Error?httpStatusCode=404 - - - 404 - text/html;+charset=utf-8 733.8558ms
[14:48:36 INF] Request starting HTTP/1.1 GET http://localhost:5000/__bundles/LeptonX.Global.3253AE0A9501A0665DAC7014DA5B2ED8.css?_v=638357357165476466 - -
[14:48:36 INF] Request starting HTTP/1.1 GET http://localhost:5000/__bundles/Views.Error.DefaultErrorComponent.default.F15FCDEA56EC024E1CDCD86CA6B586D8.css?_v=638357357163609629 - -
[14:48:36 INF] Request starting HTTP/1.1 GET http://localhost:5000/__bundles/LeptonX.Global.36C8711578048293653E8ACF51D760DC.js?_v=638357357169109472 - -
[14:48:36 INF] Request starting HTTP/1.1 GET http://localhost:5000/Abp/ApplicationConfigurationScript - -
[14:48:36 INF] Request starting HTTP/1.1 GET http://localhost:5000/Abp/ApplicationLocalizationScript?cultureName=en-GB - -
[14:48:36 INF] Request starting HTTP/1.1 GET http://localhost:5000/Abp/ServiceProxyScript - -
[14:48:36 INF] Sending file. Request path: '/__bundles/Views.Error.DefaultErrorComponent.default.F15FCDEA56EC024E1CDCD86CA6B586D8.css'. Physical path: 'N/A'
[14:48:36 INF] Request finished HTTP/1.1 GET http://localhost:5000/__bundles/Views.Error.DefaultErrorComponent.default.F15FCDEA56EC024E1CDCD86CA6B586D8.css?_v=638357357163609629 - - - 200 168 text/css 5.3486ms
[14:48:36 INF] Identity.Application was not authenticated. Failure message: Unprotect ticket failed
[14:48:36 INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc)'
[14:48:36 INF] Identity.Application was not authenticated. Failure message: Unprotect ticket failed
[14:48:36 INF] Route matched with {area = "Abp", action = "Get", controller = "AbpApplicationConfigurationScript", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] Get() on controller Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController (Volo.Abp.AspNetCore.Mvc).
[14:48:36 INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController.GetAsync (Volo.Abp.AspNetCore.Mvc)'
[14:48:36 INF] Identity.Application was not authenticated. Failure message: Unprotect ticket failed
[14:48:36 INF] Sending file. Request path: '/__bundles/LeptonX.Global.3253AE0A9501A0665DAC7014DA5B2ED8.css'. Physical path: 'N/A'
[14:48:36 INF] Request finished HTTP/1.1 GET http://localhost:5000/__bundles/LeptonX.Global.3253AE0A9501A0665DAC7014DA5B2ED8.css?_v=638357357165476466 - - - 200 330902 text/css 19.8898ms
[14:48:36 INF] Sending file. Request path: '/__bundles/LeptonX.Global.36C8711578048293653E8ACF51D760DC.js'. Physical path: 'N/A'
[14:48:36 INF] Request finished HTTP/1.1 GET http://localhost:5000/__bundles/LeptonX.Global.36C8711578048293653E8ACF51D760DC.js?_v=638357357169109472 - - - 200 923586 application/javascript 16.9175ms
[14:48:36 INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController.GetAll (Volo.Abp.AspNetCore.Mvc)'
[14:48:36 INF] Route matched with {area = "Abp", action = "Get", controller = "AbpApplicationLocalizationScript", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] GetAsync(Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationRequestDto) on controller Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController (Volo.Abp.AspNetCore.Mvc).
[14:48:36 INF] Route matched with {area = "Abp", action = "GetAll", controller = "AbpServiceProxyScript", page = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.ActionResult GetAll(Volo.Abp.AspNetCore.Mvc.ProxyScripting.ServiceProxyGenerationModel) on controller Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController (Volo.Abp.AspNetCore.Mvc).
[14:48:37 INF] Executing ContentResult with HTTP Response ContentType of application/javascript
[14:48:37 INF] Executed action Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController.GetAll (Volo.Abp.AspNetCore.Mvc) in 278.6628ms
[14:48:37 INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ProxyScripting.AbpServiceProxyScriptController.GetAll (Volo.Abp.AspNetCore.Mvc)'
[14:48:37 INF] Request finished HTTP/1.1 GET http://localhost:5000/Abp/ServiceProxyScript - - - 200 12317 application/javascript 298.6395ms
[14:48:37 INF] Executing ContentResult with HTTP Response ContentType of application/javascript
[14:48:37 INF] Executed action Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController.GetAsync (Volo.Abp.AspNetCore.Mvc) in 360.3745ms
[14:48:37 INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.Localization.AbpApplicationLocalizationScriptController.GetAsync (Volo.Abp.AspNetCore.Mvc)'
[14:48:37 INF] Request finished HTTP/1.1 GET http://localhost:5000/Abp/ApplicationLocalizationScript?cultureName=en-GB - - - 200 75794 application/javascript 379.5509ms
[14:48:37 WRN] The cookie 'XSRF-TOKEN' has set 'SameSite=None' and must also set 'Secure'.
[14:48:37 INF] Executing ContentResult with HTTP Response ContentType of application/javascript
[14:48:37 INF] Executed action Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc) in 471.6674ms
[14:48:37 INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationScriptController.Get (Volo.Abp.AspNetCore.Mvc)'
[14:48:37 INF] Request finished HTTP/1.1 GET http://localhost:5000/Abp/ApplicationConfigurationScript - - - 200 5892 application/javascript 485.9009ms
[14:48:38 INF] Start processing HTTP request GET http://localhost:5000/health-status
[14:48:38 INF] Sending HTTP request GET http://localhost:5000/health-status
[14:48:38 INF] Request starting HTTP/1.1 GET http://localhost:5000/health-status - -
[14:48:38 INF] Executing endpoint 'Health checks'
[14:48:38 INF] Executed endpoint 'Health checks'
[14:48:38 INF] Request finished HTTP/1.1 GET http://localhost:5000/health-status - - - 200 - application/json 7.1586ms
[14:48:38 INF] Received HTTP response headers after 8.4862ms - 200
[14:48:38 INF] End processing HTTP request after 8.6273ms - 200
[14:48:48 INF] Start processing HTTP request GET http://localhost:5000/health-status
[14:48:48 INF] Sending HTTP request GET http://localhost:5000/health-status
[14:48:48 INF] Request starting HTTP/1.1 GET http://localhost:5000/health-status - -
[14:48:48 INF] Executing endpoint 'Health checks'
[14:48:48 INF] Executed endpoint 'Health checks'
[14:48:48 INF] Request finished HTTP/1.1 GET http://localhost:5000/health-status - - - 200 - application/json 7.7654ms
[14:48:48 INF] Received HTTP response headers after 9.3975ms - 200
[14:48:48 INF] End processing HTTP request after 9.568ms - 200

hi

I publish(dotnet publish) locally and it is no problem.

HudoorABP\src\Hudoor.Web\bin\Debug\net7.0\publish

this is debug mode HudoorABP\src\Hudoor.Web\bin*Debug*\net7.0\publish

use publish

liming.ma@volosoft.com

Project Sent

Web.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">

  <Import Project="..\..\common.props" />

  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <RootNamespace>Hudoor.Web</RootNamespace>
    <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
    <PreserveCompilationReferences>true</PreserveCompilationReferences>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="Logs\**" />
    <Content Remove="Logs\**" />
    <EmbeddedResource Remove="Logs\**" />
    <None Remove="Logs\**" />
  </ItemGroup>

  <ItemGroup>
    <Content Include="Pages\**\*.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="Pages\**\*.css">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="AspNetCore.HealthChecks.UI" Version="7.0.0-rc2.6" />
    <PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="7.0.0-rc2.6" />
    <PackageReference Include="AspNetCore.HealthChecks.UI.InMemory.Storage" Version="7.0.0-rc2.6" />
    <PackageReference Include="Serilog.AspNetCore" Version="5.0.0" />
    <PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="7.0.10" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="7.0.10" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Twitter" Version="7.0.10" />
    <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="7.0.10" />
    <PackageReference Include="DistributedLock.Redis" Version="1.0.2" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Hudoor.Application\Hudoor.Application.csproj" />
    <PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.DistributedLocking" Version="7.4.0" />
    <ProjectReference Include="..\Hudoor.HttpApi\Hudoor.HttpApi.csproj" />
    <ProjectReference Include="..\Hudoor.EntityFrameworkCore\Hudoor.EntityFrameworkCore.csproj" />
    <PackageReference Include="Volo.Abp.Autofac" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.AspNetCore.Serilog" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.Swashbuckle" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.FeatureManagement.Web" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.Account.Pro.Public.Web.OpenIddict" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.Account.Pro.Admin.Web" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.AuditLogging.Web" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.Identity.Pro.Web" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.OpenIddict.Pro.Web" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.LanguageManagement.Web" Version="7.4.0" />
    <PackageReference Include="Volo.Saas.Host.Web" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.TextTemplateManagement.Web" Version="7.4.0" />
    <PackageReference Include="Volo.Abp.Gdpr.Web" Version="7.4.0" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX" Version="2.4.*-*" />
  </ItemGroup>

  <ItemGroup>
    <None Update="authserver.pfx">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

web module

using System;
using System.IO;
using Medallion.Threading;
using Medallion.Threading.Redis;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
using Hudoor.EntityFrameworkCore;
using Hudoor.Localization;
using Hudoor.MultiTenancy;
using Hudoor.Web.Public.Menus;
using StackExchange.Redis;
using Volo.Abp;
using Volo.Abp.AspNetCore.Authentication.OpenIdConnect;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars;
using Volo.Abp.AspNetCore.Serilog;
using Volo.Abp.Autofac;
using Volo.Abp.AutoMapper;
using Volo.Abp.BackgroundJobs;
using Volo.Abp.BackgroundWorkers;
using Volo.Abp.Caching;
using Volo.Abp.Caching.StackExchangeRedis;
using Volo.Abp.DistributedLocking;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.Http.Client.IdentityModel.Web;
using Volo.Abp.Modularity;
using Volo.Abp.MultiTenancy;
using Volo.Abp.UI;
using Volo.Abp.UI.Navigation;
using Volo.Abp.UI.Navigation.Urls;
using Volo.Abp.VirtualFileSystem;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.LeptonX.Shared;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling;

namespace Hudoor.Web.Public;

[DependsOn(
    typeof(AbpAutofacModule),
    typeof(AbpCachingStackExchangeRedisModule),
    typeof(AbpDistributedLockingModule),
    typeof(AbpAspNetCoreSerilogModule),
    typeof(HudoorHttpApiModule),
    typeof(HudoorApplicationModule),
    typeof(HudoorEntityFrameworkCoreModule),
    typeof(AbpAspNetCoreMvcUiLeptonXThemeModule),
    typeof(AbpAspNetCoreAuthenticationOpenIdConnectModule),
    typeof(AbpHttpClientIdentityModelWebModule)
    )]
public class HudoorWebPublicModule : AbpModule
{
    public override void PreConfigureServices(ServiceConfigurationContext context)
    {
        context.Services.PreConfigure<AbpMvcDataAnnotationsLocalizationOptions>(options =>
        {
            options.AddAssemblyResource(
                typeof(HudoorResource),
                typeof(HudoorDomainSharedModule).Assembly,
                typeof(HudoorApplicationContractsModule).Assembly,
                typeof(HudoorWebPublicModule).Assembly
            );
        });
    }

    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        var hostingEnvironment = context.Services.GetHostingEnvironment();
        var configuration = context.Services.GetConfiguration();

        if (!Convert.ToBoolean(configuration["App:DisablePII"]))
        {
            Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
        }

        ConfigureBundles();
        ConfigureUrls(configuration);
        ConfigureCache(configuration);
        ConfigureDataProtection(context, configuration, hostingEnvironment);
        ConfigureDistributedLocking(context, configuration);
        ConfigureMultiTenancy();
        ConfigureAuthentication(context, configuration);
        ConfigureAutoMapper();
        ConfigureVirtualFileSystem(hostingEnvironment);
        ConfigureNavigationServices(configuration);
        ConfigureTheme();
        ConfigureBackgroundJobs();

    }

    private void ConfigureBundles()
    {
        Configure<AbpBundlingOptions>(options =>
        {
            options.StyleBundles.Configure(
                LeptonXThemeBundles.Styles.Global,
                bundle =>
                {
                    bundle.AddFiles("/global-styles.css");
                }
            );
        });
    }

    private void ConfigureBackgroundJobs()
    {
        Configure<AbpBackgroundJobOptions>(options =>
        {
            options.IsJobExecutionEnabled = false;
        });

        Configure<AbpBackgroundWorkerOptions>(options =>
        {
            options.IsEnabled = false;
        });
    }
    private void ConfigureTheme()
    {
        Configure<LeptonXThemeOptions>(options =>
        {
            options.DefaultStyle = LeptonXStyleNames.System;
        });

        Configure<LeptonXThemeMvcOptions>(options =>
        {
            options.ApplicationLayout = LeptonXMvcLayouts.TopMenu;
        });
    }

    private void ConfigureUrls(IConfiguration configuration)
    {
        Configure<AppUrlOptions>(options =>
        {
            options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
        });
    }

    private void ConfigureCache(IConfiguration configuration)
    {
        Configure<AbpDistributedCacheOptions>(options =>
        {
            options.KeyPrefix = "Hudoor:";
        });
    }

    private void ConfigureMultiTenancy()
    {
        Configure<AbpMultiTenancyOptions>(options => { options.IsEnabled = MultiTenancyConsts.IsEnabled; });
    }

    private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration)
    {
        context.Services.AddAuthentication(options =>
        {
            options.DefaultScheme = "Cookies";
            options.DefaultChallengeScheme = "oidc";
        })
        .AddCookie("Cookies", options =>
        {
            options.ExpireTimeSpan = TimeSpan.FromDays(365);
            options.CheckTokenExpiration();
        })
        .AddAbpOpenIdConnect("oidc", options =>
        {
            options.Authority = configuration["AuthServer:Authority"];
            options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); ;
            options.ResponseType = OpenIdConnectResponseType.CodeIdToken;

            options.ClientId = configuration["AuthServer:ClientId"];
            options.ClientSecret = configuration["AuthServer:ClientSecret"];

            options.UsePkce = true;
            options.SaveTokens = true;
            options.GetClaimsFromUserInfoEndpoint = true;

            options.Scope.Add("roles");
            options.Scope.Add("email");
            options.Scope.Add("phone");
            options.Scope.Add("Hudoor");
        });
        /*
        * This configuration is used when the AuthServer is running on the internal network such as docker or k8s.
        * Configuring the redirectin URLs for internal network and the web
        */
        if (Convert.ToBoolean(configuration["AuthServer:IsContainerized"]))
        {
            context.Services.Configure<OpenIdConnectOptions>("oidc", options =>
            {
                options.TokenValidationParameters.ValidIssuers = new[]
                {
                    configuration["AuthServer:MetaAddress"]!.EnsureEndsWith('/'),
                    configuration["AuthServer:Authority"]!.EnsureEndsWith('/')
                };

                options.MetadataAddress = configuration["AuthServer:MetaAddress"]!.EnsureEndsWith('/') +
                                        ".well-known/openid-configuration";

                var previousOnRedirectToIdentityProvider = options.Events.OnRedirectToIdentityProvider;
                options.Events.OnRedirectToIdentityProvider = async ctx =>
                {
                    // Intercept the redirection so the browser navigates to the right URL in your host
                    ctx.ProtocolMessage.IssuerAddress = configuration["AuthServer:Authority"]!.EnsureEndsWith('/') + "connect/authorize";

                    if (previousOnRedirectToIdentityProvider != null)
                    {
                        await previousOnRedirectToIdentityProvider(ctx);
                    }
                };
                var previousOnRedirectToIdentityProviderForSignOut = options.Events.OnRedirectToIdentityProviderForSignOut;
                options.Events.OnRedirectToIdentityProviderForSignOut = async ctx =>
                {
                    // Intercept the redirection for signout so the browser navigates to the right URL in your host
                    ctx.ProtocolMessage.IssuerAddress = configuration["AuthServer:Authority"]!.EnsureEndsWith('/') + "connect/logout";

                    if (previousOnRedirectToIdentityProviderForSignOut != null)
                    {
                        await previousOnRedirectToIdentityProviderForSignOut(ctx);
                    }
                };
            });
        }
    }

    private void ConfigureAutoMapper()
    {
        Configure<AbpAutoMapperOptions>(options =>
        {
            options.AddMaps<HudoorWebPublicModule>();
        });
    }

    private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment)
    {
        Configure<AbpVirtualFileSystemOptions>(options =>
        {
            options.FileSets.AddEmbedded<HudoorWebPublicModule>();

            if (hostingEnvironment.IsDevelopment())
            {
                options.FileSets.ReplaceEmbeddedByPhysical<HudoorDomainSharedModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}Hudoor.Domain.Shared", Path.DirectorySeparatorChar)));
                options.FileSets.ReplaceEmbeddedByPhysical<HudoorApplicationContractsModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}Hudoor.Application.Contracts", Path.DirectorySeparatorChar)));
                options.FileSets.ReplaceEmbeddedByPhysical<HudoorHttpApiModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Hudoor.HttpApi", Path.DirectorySeparatorChar)));
                options.FileSets.ReplaceEmbeddedByPhysical<HudoorWebPublicModule>(hostingEnvironment.ContentRootPath);
            }
        });
    }

    private void ConfigureNavigationServices(IConfiguration configuration)
    {
        Configure<AbpNavigationOptions>(options =>
        {
            options.MenuContributors.Add(new HudoorPublicMenuContributor(configuration));
        });

        Configure<AbpToolbarOptions>(options =>
        {
            options.Contributors.Add(new HudoorToolbarContributor());
        });
    }

    private void ConfigureDataProtection(
        ServiceConfigurationContext context,
        IConfiguration configuration,
        IWebHostEnvironment hostingEnvironment)
    {
        var dataProtectionBuilder = context.Services.AddDataProtection().SetApplicationName("Hudoor");
        if (!hostingEnvironment.IsDevelopment())
        {
            var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]!);
            dataProtectionBuilder.PersistKeysToStackExchangeRedis(redis, "Hudoor-Protection-Keys");
        }
    }

    private void ConfigureDistributedLocking(
                ServiceConfigurationContext context,
                IConfiguration configuration)
    {
        context.Services.AddSingleton<IDistributedLockProvider>(sp =>
        {
            var connection = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]!);
            return new RedisDistributedSynchronizationProvider(connection.GetDatabase());
        });
    }

    public override void OnApplicationInitialization(ApplicationInitializationContext context)
    {
        var app = context.GetApplicationBuilder();
        var env = context.GetEnvironment();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseAbpRequestLocalization();

        if (!env.IsDevelopment())
        {
            app.UseErrorPage();
        }

        app.UseAbpSecurityHeaders();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseAuthentication();

        if (MultiTenancyConsts.IsEnabled)
        {
            app.UseMultiTenancy();
        }

        app.UseAuthorization();
        app.UseAuditing();
        app.UseAbpSerilogEnrichers();
        app.UseUnitOfWork();
        app.UseConfiguredEndpoints();
    }
}

Project work in Debug Mode and view all Pages after Publish relase all apge return 404 only pages buit in abp framwork disbaly

  • ABP Framework version: v7.4
  • UI Type:MVC
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): for MVC
  • Exception message and full stack trace:
  • Steps to reproduce the issue:
Showing 1 to 9 of 9 entries
Made with ❤️ on ABP v8.2.0-preview Updated on March 25, 2024, 15:11