Activities of "alper"

@maliming is working on your issue. and it's holiday in their country now. @liang will help you while he's off.

this is not a bug, it's just not implemented in v4x. it'll be available in 5.0

Answer

if you don't want to overlap the jobs, there's a very basic solution; add a static variable bool IsTheLastJobStillRunning = false then check this flag if it's true then return else set this true do your work set this false.

Hi rick,

please keep the conversation here.

thanks for the feedback

this is a consultancy topic and not direclty related to ABP code base. if you face a concrete problem in ABP code we would like to help you.

Create the below extension class in your web project. Set the ForwardedHeaderName to whatever HTTP header the real IP address is in.

public static class ApplicationBuilderExtensions
{
    public static IApplicationBuilder UseCustomHttpHeaders(this IApplicationBuilder builder)
    {
        var options = new ForwardedHeadersOptions
        {
            ForwardedForHeaderName = ForwardedHeadersDefaults.XOriginalHostHeaderName,  //"X-Original-Host"
            ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
        };

        options.KnownNetworks.Clear();
        options.KnownProxies.Clear();

        return builder.UseForwardedHeaders(options);
    }
}

Open your web module class.

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

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseCustomHttpHeaders();
    }
    else
    {
        app.UseErrorPage();
        app.UseCustomHttpHeaders();
        app.UseHsts();

        app.UseAllElasticApm(context.GetConfiguration());
    }

    //...

Create a simple controller to test it.

public class Test : Controller
{
    public string Index()
    {
        return "Client IP Address: " + HttpContext.Connection.RemoteIpAddress.ToString();
    }
}

Open Postman and make a GET request to TestController

PS: If you want to use X-Forwarded-For header, then remove ForwardedForHeaderName = "X-Original-Host" .

References:

  • https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer
  • https://github.com/IdentityServer/IdentityServer4/blob/main/src/IdentityServer4/src/Endpoints/DiscoveryEndpoint.cs#L53
  • https://github.com/IdentityServer/IdentityServer4/blob/main/src/IdentityServer4/src/Extensions/HttpContextExtensions.cs#L108
  • https://github.com/IdentityServer/IdentityServer4/blob/main/src/IdentityServer4/src/Extensions/HttpContextExtensions.cs#L88

On the angular side, we have a service, a guard and a directive responsible for permission management. All you need to do is to replace the service with your own. Here is how you can do it

First, create a service of your own. Let's call it CustomPermissionService and extend PermissionService from @abp/ng.core as follows:

import { ConfigStateService, PermissionService } from '@abp/ng.core';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class CustomPermissionService extends PermissionService {
  constructor(configStateService: ConfigStateService) {
    super(configStateService);
  }

  getGrantedPolicy$(key: string) {
    return super.getGrantedPolicy$(key);
  }
}

And in app.module.ts, provide this service as follows:

@NgModule({
  // ...
  providers: [
    // ...
    {
      provide: PermissionService,
      useExisting: CustomPermissionService,
    },
  ],
  // ...
})
export class AppModule {}

That's it. Now, when a directive/guard asks for PermissionService from angular, it will inject your service.

For more information about the PermissionService, you can examine it here. https://github.com/abpframework/abp/blob/dev/npm/ng-packs/packages/core/src/lib/services/permission.service.ts

wait for 4.4.3 (this week)

Answer

To make a feasible test, you need to add the following features to your new test project to align with the ABP project:

  • Add file system log (serilog middleware)
  • Add audit log (database level)
  • Add input validation
  • Add unit of work feature
  • Add database transaction
  • Add action filters for multi-tenancy , soft delete
  • Add global exception handler
  • Add authentication (Jwt) middleware
  • Add dynamic claim middleware
  • Add CorrelationId for cascading requests
  • Add security HTTP headers

note that I created the list off the top of my head and there'll be other middlewares that process on an HTTP request. once you add these middleware it'll probably be the same.

Showing 671 to 680 of 1957 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.3.0-preview. Updated on February 27, 2026, 05:41
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.