IDX20803: Error de página Swagger al usar idserver4 en Docker.
Tenemos 2 contenedores de Docker, uno para el servidor de identidad y otro para una aplicación. Puedo autorizar la página Swagger, pero cuando ejecuto un punto final en la página Swagger, veo un error Servidor Interno de Error 500.
A continuación se muestra la respuesta usando las herramientas de desarrollo de Edge:
Estado 500 mientras se establece la Cookie CSRF //iniciador abp.swagger.js
URL de la solicitud: https://midominio:8080/abp/Swashbuckle/SetCsrfCookie
Método de la solicitud: GET
Código de estado: 500
Dirección remota: 10.0.0.3:8080
Política del referente: estricta-origen-cuando-cruzado
Estado 500 al llamar a https://midominio:8080/api/nombre-entidad/nombreentidad //iniciador swagger-ui-bundle.js:2
Error siguiente desde el contenedor:
[INF] Inicio de la solicitud HTTP/2 GET https://midominio:8080/abp/Swashbuckle/SetCsrfCookie - -
[ERR] Se produjo una excepción durante el procesamiento del mensaje.
System.InvalidOperationException: IDX20803: No se pudo obtener la configuración de: 'System.String'.
Ahora intenté las siguientes cosas después de seguir un par de sugerencias:
- Poner ambos contenedores en la misma red de Docker usando –network.
- Dar un alias de red usando –network-alias.
El problema que entiendo es que el contenedor de la aplicación no puede resolver el dominio interno hacia sí mismo.
El método SetCsrfCookie no se encuentra en midominio:8080.
Creo que lo que necesitamos hacer es asegurarnos de que el contenedor pueda resolver midominio:8080 hacia sí mismo, cuya dirección IP es 172.18.0.4.
Intenté –add-host, –network-alias, etc. mientras ejecutaba el contenedor.
Actualmente estamos resolviendo la solicitud a la VM 10.0.0.3 (que tiene el contenedor) a midominio utilizando el archivo hosts en nuestra máquina.
Creo que el problema surge cuando el contenedor en la VM intenta resolver midominio hacia sí mismo. ¿Cómo podemos resolver esto?
Gracias
davy.ai
Solución para el error del servidor interno 500 en contenedores Docker
Problema
Hay 2 contenedores Docker, uno para el servidor de identidad y otro para una aplicación. Al intentar autorizar la página de Swagger, se encuentra un error de servidor interno 500.
Al usar las herramientas de desarrollo de Edge, se muestra el siguiente error:
El siguiente error se muestra desde el contenedor:
Ejecutar los contenedores en la misma red y asignar un alias de red utilizando
--network-alias
no resolvió el problema.Solución
El problema aquí es que el contenedor de la aplicación no puede resolver el dominio interno hacia sí mismo. El método SetCsrfCookie no se encuentra en
midominiodenombre:8080
. Para solucionar esto, debemos asegurarnos de que el contenedor pueda resolvermidominiodenombre:8080
hacia sí mismo.Podemos resolver este problema agregando la opción
--add-host
al ejecutar el contenedor.Suponiendo que la dirección IP del contenedor es
172.18.0.4
, el comando para ejecutar el contenedor sería el siguiente:Este comando agregará una entrada en el archivo
/etc/hosts
del contenedor con el nombre de hostmidominiodenombre
y la dirección IP172.18.0.4
. De esta manera, cuando el contenedor de la aplicación intente resolvermidominiodenombre:8080
, se resolverá hacia sí mismo.Después de agregar la opción
--add-host
y ejecutar el contenedor, intenta acceder a la página de Swagger y ejecutar un punto final. El error de Servidor interno 500 debería resolverse.