es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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:

  1. Poner ambos contenedores en la misma red de Docker usando –network.
  2. 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

Tags:  , , , ,

Answer

  1. Avatar for 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:

    Estado 500 mientras se establece la cookie del token CSRF //iniciador abp.swagger.js
    
    URL de la solicitud: https://midominiodenombre: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 de referencia: strict-origin-when-cross-origin
    
    Estado 500 al llamar a https://midominiodenombre:8080/api/nombre-entidad/nombreentidad //iniciador swagger-ui-bundle.js:2
    

    El siguiente error se muestra desde el contenedor:

    [INF] Iniciando solicitud HTTP/2 GET https://midominiodenombre:8080/abp/Swashbuckle/SetCsrfCookie - -
    [ERR] Se produjo una excepción al procesar el mensaje.
    System.InvalidOperationException: IDX20803: No se puede obtener la configuración de: 'System.String'.
    

    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 resolver midominiodenombre: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:

    docker run \
    --add-host=midominiodenombre:172.18.0.4 \
    <otros flags=""> \
    <imagen del="" contenedor="">
    

    Este comando agregará una entrada en el archivo /etc/hosts del contenedor con el nombre de host midominiodenombre y la dirección IP 172.18.0.4. De esta manera, cuando el contenedor de la aplicación intente resolver midominiodenombre: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.

Comments are closed.