Hi, I have build the docker-compose to run the project but after logging to the app, the angular site is request to api server by api: http://localhost:44399/api/abp/application-configuration?includeLocalizationResources=false and got the issue below (server status is 500):
System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'http://localhost:44395/.well-known/openid-configuration'.
---> System.IO.IOException: IDX20804: Unable to retrieve document from: 'http://localhost:44395/.well-known/openid-configuration'.
---> System.Net.Http.HttpRequestException: Cannot assign requested address (localhost:44395)
---> System.Net.Sockets.SocketException (99): Cannot assign requested address
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, 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.AddHttp11ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellationAsync(CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.HttpConnectionWaiter
1.WaitForConnectionAsync(Boolean async, CancellationToken requestCancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.SendAsyncAndRetryOnNetworkError(HttpClient httpClient, Uri uri)
at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel)
--- End of inner exception stack trace ---
at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel)
at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String address, IDocumentRetriever retriever, CancellationToken cancel)
at Microsoft.IdentityModel.Protocols.ConfigurationManager1.GetConfigurationAsync(CancellationToken cancel) --- End of inner exception stack trace --- at Microsoft.IdentityModel.Protocols.ConfigurationManager
1.GetConfigurationAsync(CancellationToken cancel)
at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.AuthenticateAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationService.AuthenticateAsync(HttpContext context, String scheme)
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.<
My docker compose:
version: '3.7'
services: backoffice-angular: image: aa.core/backoffice-angular:latest container_name: backoffice-angular build: context: ../angular/ dockerfile: Dockerfile ports: - "4200:80" depends_on: - backoffice-api networks: - abp-network
backoffice-api: image: aa.core/backoffice-api:latest container_name: backoffice-api hostname: backoffice-api build: context: . dockerfile: ./src/AA.Core.BackOffice.HttpApi.Host/Dockerfile ports: - "44399:80" restart: on-failure volumes: - type: bind source: ${USERPROFILE}/.abp/cli/ target: /root/.abp/cli/ networks: - abp-network
backoffice-authserver: image: aa.core/backoffice-authserver:latest container_name: backoffice-authserver build: context: ../aspnet-core/ dockerfile: src/AA.Core.BackOffice.AuthServer/Dockerfile ports: - "44395:80" depends_on: mongodb: condition: service_healthy redis: condition: service_healthy volumes: - type: bind source: ${USERPROFILE}/.abp/cli/ target: /root/.abp/cli/ restart: on-failure networks: - abp-network
db-migrator: image: aa.core/backoffice-db-migrator:latest container_name: db-migrator build: context: ../aspnet-core/ dockerfile: src/AA.Core.BackOffice.DbMigrator/Dockerfile depends_on: mongodb: condition: service_healthy volumes: - type: bind source: ${USERPROFILE}/.abp/cli/ target: /root/.abp/cli/ networks: - abp-network
mongodb: container_name: mongodb image: mongo:4.2 ports: - "27017:27017" volumes: - mongodb_data:/data/db networks: - abp-network healthcheck: test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet interval: 10s timeout: 10s retries: 10
redis: container_name: redis image: redis:alpine ports: - "6379:6379" networks: - abp-network healthcheck: test: [ "CMD", "redis-cli","ping" ]
volumes: mongodb_data: name: backoffice_mongodb_data networks: abp-network: name: backoffice-network driver: bridge
ABP Framework version: v7.3.2 UI Type: Angular Database System: MongoDB Tiered (for MVC) or Auth Server Separated (for Angular): Yes Exception message and full stack trace: [Provide any relevant details] Steps to reproduce the issue:
20 Answer(s)
-
0
hi
Cannot assign requested address (localhost:44395)
Is
http://localhost:44395/
can communicate in yourbackoffice-api
container?Please set the correct
AuthServer:Authority
URL in your docker environment.Example:
{ "AuthServer": { "Authority": "http://backoffice-authserver", "RequireHttpsMetadata": false, "MetaAddress": "http://backoffice-authserver", "SwaggerClientId": "MyProjectName_Client_Id" } }
-
0
I opened that link on another tab and it's working well but not sure why the request is not working when calling from the Angular app.
-
0
The link can be reached on your computer. But the container is in Docker.
There are different networks between Docker and your computer.
-
0
what should I do now?
-
0
Please set the correct
AuthServer:Authority
URL in your docker environment.Example:
{ "AuthServer": { "Authority": "http://backoffice-authserver", "RequireHttpsMetadata": false, "MetaAddress": "http://backoffice-authserver", "SwaggerClientId": "MyProjectName_Client_Id" } }
-
0
can I send you my project?
-
0
hi
Have you tried that?
https://support.abp.io/QA/Questions/7178/SystemInvalidOperationException-IDX20803-Unable-to-obtain-configuration-from-%27httplocalhost44395well-knownopenid-configuration%27#answer-3a1281eb-547b-98e3-ba12-1a21983d3197
Also, there is an
etc/docker
folder in the template project that you can refer to.If your project doesn't have,You can try to create a new template project to see it.
-
0
that is my question link :)))
I have tried but still not working, let me try again with empty project, if still not work, I will send that to you
-
0
I have tried but still not working
What is your
AuthServer:Authority
value? What are the logs after setting theAuthServer:Authority
? -
0
my setup on api.host: "AuthServer": { "Authority": "http://localhost:44395", "RequireHttpsMetadata": "false", "SwaggerClientId": "BackOffice_Swagger", "PasswordlessClientId": "BackOffice_App", "PasswordlessScope": "openid offline_access BackOffice" },
on authserver: "AuthServer": { "Authority": "http://localhost:44395", "RequireHttpsMetadata": "false" },
-
0
What are the logs after setting the
AuthServer:Authority
tohttp://backoffice-authserver
? -
0
System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'http://localhost:44395/.well-known/openid-configuration'. ---> System.IO.IOException: IDX20804: Unable to retrieve document from: 'http://localhost:44395/.well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: Cannot assign requested address (localhost:44395) ---> System.Net.Sockets.SocketException (99): Cannot assign requested address at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
-
0
hi
Can you try to use
http://backoffice-authserver
to replace thehttp://localhost:44395
?Because your container can't reach the
http://localhost:44395
in docker. -
0
replace on authserver and api appsetting, right? how about angular env?
-
0
This issue occurs after I log in successfully. It still works when I access the Angular page without logging in.
-
0
hi
Thanks. I will ask our colleagues.
-
0
bwt we have a document about the deployment to docker https://docs.abp.io/en/commercial/latest/startup-templates/application/deployment-docker-compose?UI=MVC&DB=EF&Tiered=Yes
-
0
I just want to run Docker Compose with the debug mode instead of running the API and auth server projects
-
0
hi
I have asked our colleagues about docker knowedge, We will reply to you soon.
-
0
Hello,
You are using angular with separate auth-server template, it seems you have mis-configurations on docker-compose file.
We've detailed explanation about the environment variables when running on docker: https://docs.abp.io/en/commercial/latest/startup-templates/application/deployment-docker-compose?UI=NG&DB=EF&Tiered=Yes#bookstore-api
Please examine the samples and the generated docker-compose files when you've created a new template (or just create a new template to compare).
As far as I see, you receive the error when you make a request from front-end to back-end; the back-end tries to validate the token but can't reach to auth-server. Specifically, you are missing environment configuration for your docker back-end service based on the docker-compose file you've shared in your initial question.