ABP Version 5.1.1
The profile picture does not seem to be working properly. It shows properly on the account page, but not in the web or public web applications. Doesn't make a difference if changing to Avatar/Gravatar or uploaded file, still shows:
Error in the browser on get of the picture:
With an Id that corresponds with the Admin user Id:
thank you
Hi
I'm trying to get my solution running locally in docker and having an issue with the authorization.
When I try to authorize:
I think this is likely an issue with configuration in the appsettings.json or docker-compose.yml files but I need some help.
appsettings.json { "App": { "SelfUrl": "https://localhost:44360", "AngularUrl": "http://localhost:4200", "CorsOrigins": "https://.Portal.com,http://localhost:4200", "RedirectAllowedUrls": "http://localhost:4200,https://localhost:44307,http://localhost:8080" }, "Redis": { "Configuration": "127.0.0.1" }, "ConnectionStrings": { "Default": "Server=host.docker.internal; Database=CTSDb; User=docker; Password=dockertime; Max Pool Size=400;" }, "AuthServer": { "Authority": "https://localhost:44360", "RequireHttpsMetadata": "false", "SwaggerClientId": "Portal_Swagger", "SwaggerClientSecret": "1q2w3e" }, "StringEncryption": { "DefaultPassPhrase": "6MynJDJ1sxdTgSZD" }, "Settings": { "Volo.Abp.LeptonTheme.Style": "Style6", "Volo.Abp.LeptonTheme.Layout.MenuPlacement": "Left", "Volo.Abp.LeptonTheme.Layout.MenuStatus": "AlwaysOpened", "Volo.Abp.LeptonTheme.Layout.Boxed": "False" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "HealthChecksUI": { "HealthChecks": [ { "Name": "Portal Health Status AppSettings Config", "Uri": "http://localhost:80/health-status" } ], "EvaluationTimeOnSeconds": 10, "MinimumSecondsBetweenFailureNotifications": 60 } }
docker-compose.yml:
version: '3.8'
services:
portal_web_svr:
container_name: portal_web_dev
image: aldercovempn.azurecr.io/acs/portal_web_dev
networks:
- cts_portal_network
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf:z
ports:
- "4200:4200"
depends_on:
- portal_api_svr
portal_api_svr: container_name: portal_api_dev image: aldercovempn.azurecr.io/acs/portal_api_dev networks: - cts_portal_network environment: - ASPNETCORE_ENVIRONMENT=Production - ConnectionStrings__Default=Server=host.docker.internal;Database=Acs_Portal;User id=docker; Password=dockertime; volumes: - ./Host-Logs:/app/Logs - ./App_Data:/app/App_Data:z - ./appsettings.json:/app/appsettings.json:z ports: - "44360:44360" - "44307:44307" - "8080:80" - "44345:443"
links:
- redis
redis: container_name: portal_redis # Container name image: redis networks: - cts_portal_network
networks: cts_portal_network:
Thanks
2021-12-06 19:15:19.798 +00:00 [INF] Start processing HTTP request GET "http://[::]/health-status" 2021-12-06 19:15:19.798 +00:00 [INF] Sending HTTP request GET "http://[::]/health-status" 2021-12-06 19:15:19.809 +00:00 [ERR] GetHealthReport threw an exception when trying to get report from /health-status configured with name Portal Health Status. System.Net.Http.HttpRequestException: IPv4 address 0.0.0.0 and IPv6 address ::0 are unspecified addresses that cannot be used as a target address. (Parameter 'hostName') ([::]:80) ---> System.ArgumentException: IPv4 address 0.0.0.0 and IPv6 address ::0 are unspecified addresses that cannot be used as a target address. (Parameter 'hostName') at System.Net.Dns.GetHostEntryOrAddressesCoreAsync(String hostName, Boolean justReturnParsedIp, Boolean throwOnIIPAny, Boolean justAddresses) at System.Net.Dns.BeginGetHostAddresses(String hostNameOrAddress, AsyncCallback requestCallback, Object state) at System.Net.Sockets.MultipleConnectAsync.StartConnectAsync(SocketAsyncEventArgs args, DnsEndPoint endPoint) at System.Net.Sockets.Socket.ConnectAsync(SocketAsyncEventArgs e, Boolean userSocket) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ConnectAsync(Socket socket) at System.Net.Sockets.Socket.ConnectAsync(EndPoint remoteEP, CancellationToken cancellationToken) at System.Net.Sockets.SocketTaskExtensions.ConnectAsync(Socket socket, EndPoint remoteEP, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.DefaultConnectAsync(SocketsHttpConnectionContext context, CancellationToken cancellationToken) at System.Net.Http.ConnectHelper.ConnectAsync(Func3 callback, DnsEndPoint endPoint, HttpRequestMessage requestMessage, CancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.ConnectHelper.ConnectAsync(Func3 callback, DnsEndPoint endPoint, HttpRequestMessage requestMessage, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request, HttpCompletionOption completionOption, Boolean async, Boolean emitTelemetryStartStop, CancellationToken cancellationToken) at HealthChecks.UI.Core.HostedService.HealthCheckReportCollector.GetHealthReport(HealthCheckConfiguration configuration) i
The health checks UI shows this status:
I can configure another health check in the appconfig, which works OK:
appconfig.json settings:
"HealthChecksUI": { "HealthChecks": [ { "Name": "Portal Health Status AppSettings Config", "Uri": "http://localhost:80/health-status" } ], "EvaluationTimeOnSeconds": 10, "MinimumSecondsBetweenFailureNotifications": 60 }
application Log:
2021-12-06 20:36:17.126 +00:00 [INF] Executing endpoint 'HealthChecks UI Api' 2021-12-06 20:36:17.128 +00:00 [INF] Executed endpoint 'HealthChecks UI Api' 2021-12-06 20:36:17.128 +00:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/health-api - - - 200 - application/json 10.1569ms 2021-12-06 20:36:20.024 +00:00 [INF] Start processing HTTP request GET "http://localhost/health-status" 2021-12-06 20:36:20.024 +00:00 [INF] Sending HTTP request GET "http://localhost/health-status" 2021-12-06 20:36:20.025 +00:00 [INF] Request starting HTTP/1.1 GET http://localhost/health-status - - 2021-12-06 20:36:20.028 +00:00 [INF] Executing endpoint 'Health checks' 2021-12-06 20:36:20.030 +00:00 [INF] Executed endpoint 'Health checks' 2021-12-06 20:36:20.031 +00:00 [INF] Received HTTP response headers after 7.0253ms - 200 2021-12-06 20:36:20.031 +00:00 [INF] End processing HTTP request after 7.1096ms - 200
I use docker compose to deploy the app locally to docker
`version: '3.8'
services:
portal_web_svr:
container_name: portal_web_dev
image: aldercovempn.azurecr.io/acs/portal_web_dev
networks:
- cts_portal_network
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf:z
ports:
- "4200:4200"
depends_on:
- portal_api_svr
portal_api_svr: container_name: portal_api_dev image: aldercovempn.azurecr.io/acs/portal_api_dev networks: - cts_portal_network environment: - ASPNETCORE_ENVIRONMENT=Production - ConnectionStrings__Default=Server=host.docker.internal;Database=Acs_Portal;User id=docker; Password=dockertime; volumes: - ./Host-Logs:/app/Logs - ./App_Data:/app/App_Data:z - ./appsettings.json:/app/appsettings.json:z ports: - "44360:44360" - "44307:44307" - "8080:80" links: - redis
redis: container_name: portal_redis # Container name image: redis networks: - cts_portal_network
networks: cts_portal_network: `
@Rrader30
Appreciate for info, was hoping to utilize out of the box too but will have to craft my own as well.
Marketplace for modules would be nice!
Thanks
@Rrader30, we need to do something similar.
I think the File Management module is an incomplete feature without the ability to manage permissions to folders, or at least utilize in a way that provides a root folder as an entry point to the UI, so that the user is restricted to only that folder and its subfolders.
There's an open issue for Resource based authorization integration: https://github.com/abpframework/abp/issues/236
Have you found workable a solution yet that you can share?
Thanks Jamie
Adding a new multi-tenanted entity through ABP Suite has AutoMapperConfigurationException
ABP Framework version: v4.3.0 ( module template) UI type: MVC DB provider: EF Core Identity Server Separated: no
When starting the Unified App from a Module template, after generating a multi-tenanted entity, adding migration and updating SQL database, the application has exception on startup:
AutoMapperConfigurationException: Unmapped members were found. Review the types and members below. Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters
ResourceClassTypeCreateDto -> ResourceClassType (Destination member list) Acs.ResourceLibrary.ResourceClassTypes.ResourceClassTypeCreateDto -> Acs.ResourceLibrary.ResourceClassTypes.ResourceClassType (Destination member list)
TenantId
ResourceClassTypeUpdateDto -> ResourceClassType (Destination member list) Acs.ResourceLibrary.ResourceClassTypes.ResourceClassTypeUpdateDto -> Acs.ResourceLibrary.ResourceClassTypes.ResourceClassType (Destination member list)
Unmapped properties: TenantId AutoMapper.ConfigurationValidator.AssertConfigurationIsValid(IEnumerable typeMaps)
<br>
DependencyResolutionException: An exception was thrown while activating λ:Microsoft.AspNetCore.Identity.ISecurityStampValidator -> Castle.Proxies.AbpSecurityStampValidatorProxy -> Volo.Abp.MultiTenancy.TenantConfigurationProvider -> Volo.Saas.Tenants.TenantStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper1[[Volo.Saas.SaasDomainModule, Volo.Saas.Domain, Version=4.3.0.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider
1[[Volo.Saas.SaasDomainModule, Volo.Saas.Domain, Version=4.3.0.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor.
Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action next)
<br> Was able to resolve the issue by adding .Ignore(x => x.TenantId) extension on the CreateMap in the src/Project.Application ProjectAutoMapperProfile class:
Is that the correct approach?
@alper any update on this?
@lwilbourn @rcalv002 I reproduced the issue. There's a problem generating the Angular code. Created an internal issue. Will be fixed in v4.0.1
I have just updated abp cli and suite to 4.1.1, created a new solution but the CRUD Page Generator isn't generating Angular UI.
I can see an issue in the Angular Schematics log file.
0 verbose cli [ 0 verbose cli 'C:\Program Files\nodejs\node.exe', 0 verbose cli 'C:\Users\UserName\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js', 0 verbose cli 'exec', 0 verbose cli '--', 0 verbose cli 'C:/Users/UserName/Source/Repos/TestAngular/angular/.suite/schematics/node_modules/.bin/ng', 0 verbose cli 'g', 0 verbose cli '.suite/schematics/collection.json:entity', 0 verbose cli 'app-pro', 0 verbose cli 'TestAngular', 0 verbose cli 'C:/Users/UserName/Source/Repos/TestAngular/aspnet-core/.suite/entities/PeriodType.json' 0 verbose cli ] 1 info using npm@7.4.0 2 info using node@v12.14.1 3 timing config:load:defaults Completed in 1ms 4 timing config:load:file:C:\Users\UserName\AppData\Roaming\npm\node_modules\npm\npmrc Completed in 2ms 5 timing config:load:builtin Completed in 2ms 6 timing config:load:cli Completed in 3ms 7 timing config:load:env Completed in 0ms 8 timing config:load:file:C:\Users\UserName\Source\Repos\TestAngular\angular.npmrc Completed in 0ms 9 timing config:load:project Completed in 1ms 10 timing config:load:file:C:\Users\UserName.npmrc Completed in 1ms 11 timing config:load:user Completed in 1ms 12 timing config:load:file:C:\Users\UserName\AppData\Roaming\npm\etc\npmrc Completed in 0ms 13 timing config:load:global Completed in 0ms 14 timing config:load:cafile Completed in 0ms 15 timing config:load:validate Completed in 0ms 16 timing config:load:setUserAgent Completed in 0ms 17 timing config:load:setEnvs Completed in 1ms 18 timing config:load Completed in 10ms 19 verbose npm-session 46848984ec072eb7 20 timing npm:load Completed in 19ms 21 timing command:exec Completed in 6ms 22 verbose stack Error: ENOENT: no such file or directory, open 'C:\Users\UserName\Source\Repos\TestAngular\angular.suite\schematics\node_modules.bin\ng\package.json' 23 verbose cwd C:\Users\UserName\Source\Repos\TestAngular\angular 24 verbose Windows_NT 10.0.18363 25 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Users\UserName\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js" "exec" "--" "C:/Users/UserName/Source/Repos/TestAngular/angular/.suite/schematics/node_modules/.bin/ng" "g" ".suite/schematics/collection.json:entity" "app-pro" "TestAngular" "C:/Users/UserName/Source/Repos/TestAngular/aspnet-core/.suite/entities/PeriodType.json" 26 verbose node v12.14.1 27 verbose npm v7.4.0 28 error code ENOENT 29 error syscall open 30 error path C:/Users/UserName/Source/Repos/TestAngular/angular/.suite/schematics/node_modules/.bin/ng/package.json 31 error errno -4058 32 error enoent ENOENT: no such file or directory, open 'C:\Users\UserName\Source\Repos\TestAngular\angular.suite\schematics\node_modules.bin\ng\package.json' 33 error enoent This is related to npm not being able to find a file. 34 verbose exit -4058