public override async Task<IdentityUserDto> GetAsync(Guid id) { using (DataFilter.Disable<ISoftDelete>()) return await base.GetAsync( id ); }
i have a question related to this if I want to display all the users in the table as admin, if I disabled the filter for ISoftDeleted, unfortunately, the IdentityUserDto doesn't return IsDeleted and deletionTime with return data, how to fix this?
public override async Task<PagedResultDto<IdentityUserDto>> GetListAsync(GetIdentityUsersInput input) { using (DataFilter.Disable<ISoftDelete>()) return await base.GetListAsync(input); }
how we can create multiple sequences (One for each tenant)? for eaxample:
| Tenant |AccountNo | | --- | --- | | TenantA | 1000001 |customerX| | TenantA| 1000002 | customerX| | TenantB| 1000001 | customerX| | TenantB | 1000002 | CustomerX |
if we use the following code , it will generate a same sequence for all tenants
b.Property(o => o.AccountNo) .HasDefaultValueSql("NEXT VALUE FOR AccountNo").ValueGeneratedOnAdd(); builder.HasSequence<long>("AccountNo").StartsAt(1000001).IncrementsBy(1);
using Volo.Abp.EntityFrameworkCore.Modeling;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
namespace BstCore.EntityFrameworkCore;
[ConnectionStringName(BstCoreDbProperties.ConnectionStringName)]
public interface IBstCoreDbContext : IEfCoreDbContext
{
DbSet<PersonTitle> PersonTitles { get; set; } **= null!;** <-----compiler : the error in the generated code ,interface property cannot have an initializer
DbSet<Neighborhood> Neighborhoods { get; set; } //= null!;
DbSet<Town> Towns { get; set; }//= null!;
DbSet<District> Districts { get; set; }// = null!;
DbSet<Region> Regions { get; set; }//= null!;
DbSet<Country> Countries { get; set; }// = null!;
/* Add DbSet for each Aggregate Root here. Example:
* DbSet<Question> Questions { get; }
*/
}
noting that no error in the abp suite log file! just waiting
public class PersonTitlesAppServiceTests : BstCoreApplicationTestBase
{
private readonly IPersonTitlesAppService _personTitlesAppService;
private readonly IRepository<PersonTitle, int> _personTitleRepository;
public PersonTitlesAppServiceTests()
{
_personTitlesAppService = GetRequiredService<IPersonTitlesAppService>();
_personTitleRepository = GetRequiredService<IRepository<PersonTitle, int>>();
}
[Fact]
public async Task GetListAsync()
{
// Act
var result = await _personTitlesAppService.GetListAsync(new GetPersonTitlesInput());`
it should be fixed as the following code
public abstract class PersonTitlesAppServiceTests<TStartupModule> : BstCoreApplicationTestBase<TStartupModule>
where TStartupModule : IAbpModule
{}
I’ve updated my app to abp version 8.0.0-rc.1 But I got the following error: [12:28:49 ERR] ABP-LIC-0013 - License exception: ABP-LIC-0023: An error occured while calling the license server! License check communication failed! The response was not successful: 400 - Bad Request [12:28:49 ERR] ABP-LIC-0013 - License exception: ABP-LIC-0023: An error occured while calling the license server! License check communication failed! The response was not successful: 400 - Bad Request [12:28:49 INF] Saving healthchecks configuration to database [12:28:50 ERR] ABP-LIC-0013 - License exception: ABP-LIC-0023: An error occured while calling the license server! License check communication failed! The response was not successful: 400 - Bad Request [12:28:50 ERR] ABP-LIC-0013 - License exception: ABP-LIC-0023: An error occured while calling the license server! License check communication failed! The response was not successful: 400 - Bad Request [12:28:50 DBG] Waiting to acquire the distributed lock for saving external localizations... ABP-LIC-0003 - No modules found! There's no module found for your organization. Contact to license@abp.io for more information. [12:23:57 INF] User profile is available. Using 'C:\Users****\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest. [12:23:57 ERR] ABP-LIC-0013 - License exception: ABP-LIC-0023: An error occured while calling the license server! License check communication failed! The response was not successful: 400 - Bad Request
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, please use the search on the homepage.
If you're creating a bug/problem report, please include the following:
after i upgraded to v7.4.0-rc.3 , and published my apps, the app couldn't show the modal page for editing user or role permissions or personal data (all related to identity), the log file as the following
2023-09-20 10:23:51.108 +03:00 [ERR] An unhandled exception has occurred while executing the request.
System.IO.FileNotFoundException: Could not load file or assembly 'System.Web.HttpUtility, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.
File name: 'System.Web.HttpUtility, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
at AspNetCoreGeneratedDocument.Pages_AbpPermissionManagement_PermissionManagementModal.<ExecuteAsync>b__24_1()
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[TStateMachine](TStateMachine& stateMachine)
at AspNetCoreGeneratedDocument.Pages_AbpPermissionManagement_PermissionManagementModal.<ExecuteAsync>b__24_1()
at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.GetChildContentAsync(Boolean useCachedResult, HtmlEncoder encoder)
at Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal.AbpModalTagHelperService.ProcessAsync(TagHelperContext context, TagHelperOutput output)
at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, Int32 i, Int32 count)
at AspNetCoreGeneratedDocument.Pages_AbpPermissionManagement_PermissionManagementModal.<ExecuteAsync>b__24_0()
at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperExecutionContext.GetChildContentAsync(Boolean useCachedResult, HtmlEncoder encoder)
at Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper.ProcessAsync(TagHelperContext context, TagHelperOutput output)
at Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner.<RunAsync>g__Awaited|0_0(Task task, TagHelperExecutionContext executionContext, Int32 i, Int32 count)
at AspNetCoreGeneratedDocument.Pages_AbpPermissionManagement_PermissionManagementModal.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.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable1 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()
--- End of stack trace from previous location ---
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__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
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.Auditing.AbpAuditingMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Volo.Abp.AspNetCore.Auditing.AbpAuditingMiddleware.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 Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Volo.Abp.AspNetCore.Uow.AbpUnitOfWorkMiddleware.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.ExceptionHandling.AbpExceptionHandlingMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Volo.Abp.AspNetCore.ExceptionHandling.AbpExceptionHandlingMiddleware.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.Builder.ApplicationBuilderAbpOpenIddictMiddlewareExtension.<>c__DisplayClass0_0.<<UseAbpOpenIddictValidation>b__0>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)
2023-09-20 10:24:41.334 +03:00 [ERR] ---------- RemoteServiceErrorInfo ----------
{
"code": null,
"message": "An internal error occurred during your request!",
"details": null,
"data": {
"ActivatorChain": "Pages.Gdpr.PersonalData.Index"
},
"validationErrors": null
}
2023-09-20 10:24:41.335 +03:00 [ERR] An exception was thrown while activating Pages.Gdpr.PersonalData.Index.
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Pages.Gdpr.PersonalData.Index.
---> Autofac.Core.DependencyResolutionException: None of the constructors found on type 'Pages.Gdpr.PersonalData.Index' can be invoked with the available services and parameters:
Cannot resolve parameter 'Volo.Abp.Gdpr.IGdprRequestAppService gdprRequestAppService' of constructor 'Void .ctor(Volo.Abp.Gdpr.IGdprRequestAppService)'.
also,after upgrade i can't open the user edit modal, knowing that we override it and we noted in the newer version there is a new tab "Details" , could you give me the new tab razor page code
my current page as the following
<form method="post" asp-page="/Identity/Users/EditModal"> <abp-modal> <abp-modal-header style="width:130%" title="@L["Edit"].Value"></abp-modal-header> <abp-modal-body style="width:130%"> <abp-tabs name="create-user-modal-tabs"> .. </abp-tab> @if (Model.Roles.Any()) { <abp-tab name="Roles" title="@L.GetString("Roles{0}", Model.Roles.Count(r => r.IsAssigned))"> .. </abp-tab> } @if (Model.OrganizationUnits.Any()) { <abp-tab name="OrganizationUnits" title="@L.GetString("OrganizationUnits{0}", Model.OrganizationUnits.Count(r => r.IsAssigned))"> ... </abp-tab> } <abp-tab name="your-custom-tab" title="@L["ExtraProperties"].Value"> ... </abp-tab> <abp-tab name="SocialMedia-tab" title="@L["SocialMedia"].Value"> ... </abp-tab> </abp-tabs> </abp-modal-body> <abp-modal-footer style="width:130%" buttons="@(AbpModalButtons.Cancel | AbpModalButtons.Save)"></abp-modal-footer> </abp-modal> </form>
thanks in advance
If you're creating a bug/problem report, please include the followings:
1- i see there is an issue in RTL of the Leptonx theme, when selecting Arabic language (RTL) it loss the functionality of right toolbar
how to move the right panel to the top of the page or fixed place in the menu footer instead of the right panel, if you open it in MS. Edge browser it will display as the following which make the user confused :
when I change the language to Arabic (RTL) , the issue appears in the localization of numbers such as the "," instead of "."
i added the following code:
`
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
var app = context.GetApplicationBuilder();
var env = context.GetEnvironment();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
var dateformat = new DateTimeFormatInfo
{
ShortDatePattern = "MM/dd/yyyy",
LongDatePattern = "MM/dd/yyyy hh:mm:ss tt"
};
var defaultDateCulture = "ar";
var ar = new CultureInfo(defaultDateCulture);
ar.NumberFormat.NumberDecimalSeparator = ".";
ar.NumberFormat.CurrencyDecimalSeparator = ".";
ar.DateTimeFormat = dateformat;
var en = new CultureInfo("en");
en.NumberFormat.NumberDecimalSeparator = ".";
en.NumberFormat.CurrencyDecimalSeparator = ".";
en.DateTimeFormat = dateformat;
var supportedCultures = new[]
{
ar,
en,
};
app.UseAbpRequestLocalization(options =>
{
options.DefaultRequestCulture = new RequestCulture("ar");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders = new List<IRequestCultureProvider>
{
new QueryStringRequestCultureProvider(),
new CookieRequestCultureProvider()
};
});
app.UseAbpRequestLocalization();
the above code didn't work for me but I use to add the following line on each razor page
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
my question here: how i configure my app to take it automatically instead of modifying the code for each page? and I want to make the digits count after the decimal point in a specific format for all language
question #2: can i only use the following code in the other language?do i need to make extra step to work instead of the above code
abp.localization.currentCulture
{
"displayName": "Arabic",
"englishName": "Arabic",
"threeLetterIsoLanguageName": "arb",
"twoLetterIsoLanguageName": "ar",
"isRightToLeft": true,
"cultureName": "ar",
"name": "ar",
"nativeName": "Arabic",
"formatNumber":" <<<<<<<<?
"dateTimeFormat": {
"calendarAlgorithmType": "SolarCalendar",
"dateTimeFormatLong": "dddd, MMMM d, yyyy",
"shortDatePattern": "M/d/yyyy",
"fullDateTimePattern": "dddd, MMMM d, yyyy h:mm:ss tt",
"dateSeparator": "/",
"shortTimePattern": "h:mm",
"longTimePattern": "h:mm:ss tt"
}
}
could you guide us on how to integrate SQL Server Reporting Services (SSRS) with Abp? thanks in advance :)
1- I want to customize the user UI, to add a new tab page when editing the user
2- how to prevent a user who has the privilege to manage the users from deleting the Admin user or Sys Role?
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, please use the search on the homepage.
If you're creating a bug/problem report, please include followings:
my worker as the following:
public interface IBillingWorker : IHangfireBackgroundWorker
{
}
[ExposeServices(typeof(IBillingWorker))]
public class BillingWorker : HangfireBackgroundWorkerBase, IBillingWorker
{
private readonly ILogger _logger;
private readonly IBillingBatchRepository _billingBatchRepository;
public BillingWorker(ILogger logger, IBillingBatchRepository billingBatchRepository)
{
RecurringJobId = nameof(BillingWorker);
CronExpression = Cron.Minutely();
_logger = logger;
_billingBatchRepository = billingBatchRepository;
}
[UnitOfWork(isTransactional: false)]
public override async Task DoWorkAsync(CancellationToken cancellationToken = default)
{
_logger.LogInformation("start billingWorker..!");
var querable = await _billingBatchRepository.GetQueryableAsync();
var query = querable.Where(q = q.EndTime == default && q.StartTime == default
&& q.ExecutionTime <= DateTime.Now
).Select(x = x.Id).ToList();
_logger.LogInformation($"Executed billingWorker..!: return {query.Count}");
await Task.CompletedTask;
}
}
and i registred it as the following:
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
AsyncHelper.RunSync(async () =
{
await context.AddBackgroundWorkerAsync();
});
}
[DependsOn(typeof(AbpBackgroundJobsModule))]
[DependsOn(typeof(AbpBackgroundJobsHangfireModule))]
[DependsOn(typeof(AbpBackgroundWorkersHangfireModule))]
public class BstUtilityBackgroundServicesModule : AbpModule
{
...
}
once the worker is started it gives the following error:
System.ObjectDisposedException: Cannot access a disposed context instance. A common cause of this error is disposing a context instance that was resolved from dependency injection and then later trying to use the same context instance elsewhere in your application. This may occur if you are calling 'Dispose' on the context instance, or wrapping it in a using statement. If you are using dependency injection, you should let the dependency injection container take care of disposing context instances. Object name: 'BillingDbContext'.
if i use the following code
using (var uow = _unitOfWorkManager.Begin())
{
var querable = await _billingBatchRepository.GetQueryableAsync();
var query = querable.Where(q => q.EndTime == default && q.StartTime == default
&& q.ExecutionTime<=DateTime.Now
).Select(x => x.Id);
list = await AsyncExecuter.ToListAsync(query);
}
it keeps returning an empty list!! , but if I call it manually from the appservice , then it will return the data
Note that I BillingDbContext is in another module
i'll appreciate if you can provide a working sample with best practices on how we can use hangfire with ABP ,,,, noting that I read the documents files but had no luck because if I use it in appservice, not in the domain it will give an authorization field even if I use [AllowAnonymous]