Más

Código de error 500, ¿error al realizar la operación de ejecución desde la tarea de impresión de la API de ArcGIS para JavaScript?

Código de error 500, ¿error al realizar la operación de ejecución desde la tarea de impresión de la API de ArcGIS para JavaScript?


Estoy tratando de usar la tarea de impresión para generar un archivo PNG o PDF de mi mapa web, pero siempre obtengo un Código de error 500, error al realizar la operación de ejecución.

¿Algunas ideas?

Estoy usando ArcGIS API para JavaScript 3.2.0

var dojoConfig = {async: true}; on (dom.byId ("png"), 'click', function () {printTaskSetup ("MAP_ONLY", "png32");}) on (dom.byId ("landscape"), 'click', function () {printTaskSetup ("A4 horizontal", "PDF");}) en (dom.byId ("retrato"), 'clic', función () {printTaskSetup ("A4 vertical", "PDF");}) función printTaskSetup (diseño, formato) {var template = new esri.tasks.PrintTemplate (template.format = format; template.layout = layout; template.layoutOptions = {"scalebarUnit": "Miles", "copyrightText": "Clerk", " showAttribution ": false} template.preserveScale = true; var params = new esri.tasks.PrintParameters (); params.map = map; params.template = template; printTask = new esri.tasks.PrintTask (imprimir URL, dojoConfig); printTask.submitJob (params, printResult, printError);} función printResult (resultado) {ventana.open (resultado.url)} función printError (error) {alerta (error);}

podría ser más de una cosa, pero supongo que está llamando a 'ejecutar' y la tarea de impresión está configurada como asincrónica o 'submitJob' y es sincrónica

Para estar seguro, navegue por el directorio de servicios REST para ver qué operación admite realmente el servicio y compárelo con la URL que 500.

si ese es el problema, puede configurar sync / async en los parámetros del constructor PrintTask.

https://developers.arcgis.com/javascript/jsapi/printtask-amd.html#printtask1


¿Debería una API REST devolver un 500 Internal Server Error para indicar que una consulta hace referencia a un objeto que no existe?

Estoy trabajando con una API REST que reside en un servidor que maneja datos para una multitud de dispositivos IoT.

Mi tarea es consultar al servidor utilizando la API para recopilar información de rendimiento específica sobre dichos dispositivos.

En un caso, obtengo una lista de dispositivos disponibles y sus identificadores correspondientes, luego consulto al servidor para obtener más detalles utilizando esos identificadores (GUID).

El servidor está devolviendo un 500 Internal Server Error para una consulta en uno de esos ID. En mi aplicación, se lanza una excepción y no veo detalles sobre el error. Si examino la respuesta más de cerca con Postman, puedo ver que el servidor devolvió JSON en el cuerpo que contiene:

errorMessage: "Este ID no existe".

Para empezar, ignore el hecho de que el servidor proporcionó la identificación; ese es un problema separado para el desarrollador.

¿Debería una API REST devolver un error interno del servidor 500 para informar que una consulta hace referencia a un objeto que no existe? En mi opinión, los códigos de respuesta HTTP deberían referirse estrictamente al estado de la llamada REST, en lugar de a la mecánica interna de la API. Esperaría un 200 OK con la respuesta que contiene el error y la descripción, que sería propiedad de la API en cuestión.

Se me ocurre que existe una diferencia potencial en la expectativa dependiendo de cómo esté estructurada la llamada REST.

En el primer caso, el ID del dispositivo se pasa como una variable GET. Un 404 o 500 indicaría que la ruta (/ restapi / deviceinfo) no se encuentra o da como resultado un error del servidor.

En el segundo caso, el ID del dispositivo es parte de la URL. Sería más comprensivo con un 404 Not Found, pero aún podría argumentar en función de qué partes de la ruta se interpretan como variables frente a puntos finales.


Actualización: esta respuesta cubre la clasificación general de errores. Para obtener una respuesta más específica sobre cómo manejar mejor la consulta exacta del OP, consulte otras respuestas a esta pregunta

En MySQL, no puede modificar la misma tabla que usa en la parte SELECT.
Este comportamiento está documentado en: http://dev.mysql.com/doc/refman/5.6/en/update.html

Tal vez puedas unirte a la mesa solo

Si la lógica es lo suficientemente simple como para cambiar la forma de la consulta, pierda la subconsulta y una la tabla a sí misma, empleando los criterios de selección adecuados. Esto hará que MySQL vea la tabla como dos cosas diferentes, permitiendo que se produzcan cambios destructivos.

Alternativamente, intente anidar la subconsulta más profundamente en una cláusula from.

Si necesita absolutamente la subconsulta, hay una solución alternativa, pero es desagradable por varias razones, incluido el rendimiento:

La subconsulta anidada en la cláusula FROM crea una tabla temporal implícita, por lo que no cuenta como la misma tabla que está actualizando.

. pero cuidado con el optimizador de consultas

Sin embargo, tenga en cuenta que a partir de MySQL 5.7.6 en adelante, el optimizador puede optimizar la subconsulta y aún así darle el error. Afortunadamente, la variable optimizer_switch se puede utilizar para desactivar este comportamiento, aunque no puedo recomendar hacerlo como algo más que una solución a corto plazo o para pequeñas tareas puntuales.

Gracias a Peter V. Mørch por este consejo en los comentarios.

La técnica de ejemplo fue del Baron Schwartz, publicada originalmente en Nabble, parafraseada y ampliada aquí.


  • lo más habitual es escribir en una conexión cuando el otro extremo ya la ha cerrado
  • con menos frecuencia, el par cierra la conexión sin leer todos los datos que ya están pendientes en su extremo.

Entonces, en ambos casos, tiene un protocolo de aplicación mal definido o implementado.

Hay una tercera razón que no documentaré aquí, pero que implica que el par tome una acción deliberada para restablecer en lugar de cerrar correctamente la conexión.

En nuestro caso, experimentamos esto al realizar una prueba de carga en nuestro servidor de aplicaciones. El problema resultó que necesitamos agregar memoria adicional a nuestra JVM porque se estaba agotando. Esto resolvió el problema.

Intente aumentar la memoria disponible para la JVM o supervise el uso de la memoria cuando obtenga esos errores.

SocketException: tubería rota, es causada por el 'otro extremo' (el cliente o el servidor) que cierra la conexión mientras su código está leyendo o escribiendo en la conexión.

Esta es una excepción muy común en las aplicaciones cliente / servidor que reciben tráfico de clientes o servidores fuera del control de la aplicación. Por ejemplo, el cliente es un navegador. Si el navegador realiza una llamada Ajax y / o el usuario simplemente cierra la página o el navegador, esto puede eliminar todas las comunicaciones de forma inesperada. Básicamente, verá este error cada vez que el otro extremo finalice su aplicación y no lo estaba anticipando.

Si experimenta esta excepción en su aplicación, significa que debe verificar su código donde ocurre la IO (entrada / salida) y envolverlo con un bloque try / catch para detectar esta IOException. Entonces, depende de usted decidir cómo quiere manejar esta situación semi-válida.

En su caso, el primer lugar donde todavía tiene el control es la llamada a HttpMethodDirector.executeWithRetry - Por lo tanto, asegúrese de que la llamada esté envuelta con el bloque try / catch y maneje como mejor le parezca.

Recomiendo encarecidamente no registrar errores específicos de SocketException-Broken Pipe en cualquier otro nivel que no sean los niveles de depuración / seguimiento. De lo contrario, esto se puede utilizar como una forma de ataque DOS (Denegación de servicio) llenando los registros. Intente endurecer y realizar una prueba negativa de su aplicación para este escenario común.


Logs Application de Windows en el Visor de eventos de Windows puede tener pistas al respecto.

En mi caso, produce un evento como

Error en la generación del contexto de activación para "C: Archivos de programa (x86) Microsoft Visual Studio 12.0 VC bin CL.exe". Error en el archivo de manifiesto o política "C: Archivos de programa (x86) Microsoft Visual Studio 12.0 VC bin CL.exe.Config "en la línea 0. Sintaxis XML no válida.

Simplemente elimino ese archivo .config y funciona.

Esto me sucede cuando el escáner de virus agresivo en mi organización detecta en secreto estos archivos como maliciosos y los elimina en segundo plano.

En mi caso, cambiar las reglas del antivirus resuelve este problema.

Este error ocurrirá con varias herramientas al iniciar MSBuild desde la línea de comandos:

agregarlos a la lista de exclusión del antivirus activo puede solucionar algunos de los problemas, pero no será suficiente con un antivirus moderno.

Una alternativa es desactivar Tracker.exe, que es una herramienta que permite compilaciones incrementales. Como no es algo que generalmente desee en un servidor de compilación, encontré que es seguro desactivarlo.

Puede desactivarlo pasando este parámetro a msbuild: / p: TrackFileAccess = false


& ldquoLa conexión subyacente se cerró: se produjo un error inesperado en un envío. & rdquo Con certificado SSL

Problema: recibo esta excepción "LA CONEXIÓN SUBYACENTE FUE CERRADA: OCURRIÓ UN ERROR INESPERADO EN UN ENVÍO" en mis registros y está interrumpiendo nuestra integración OEM con nuestro sistema de marketing por correo electrónico en momentos aleatorios que varían de [1 hora a 4 horas]

Mi sitio web está alojado en un servidor Windows 2008 R2 con IIS 7.5.7600. Este sitio web tiene una gran cantidad de componentes OEM y un panel de control completo. Todo funciona bien con todos los demás elementos del sitio web, excepto con uno de nuestros componentes de marketing por correo electrónico que estamos usando como una solución de iframe dentro de nuestro panel de control. La forma en que funciona es, envío un httpWebRequestobject con todas las credenciales y obtengo una URL que puse en un iframe y funciona. Pero solo funciona durante un tiempo [1 hora - 4 horas] y luego aparece la siguiente excepción "LA CONEXIÓN SUBYACENTE FUE CERRADA: OCURRIÓ UN ERROR INESPERADO EN UN ENVÍO" e incluso si el sistema intenta obtener la URL de httpWebRequest. falla con la misma excepción. La única forma de hacer que vuelva a funcionar es reciclar el grupo de aplicaciones o cualquier cosa se edita en web.config. Estoy realmente agotado de todas las opciones que se me ocurrieron.


Más formas de ver un error interno del servidor

En Internet Explorer, el mensaje El sitio web no puede mostrar la página a menudo indica un error interno del servidor HTTP 500. Un error 405 Método no permitido es otra posibilidad, pero puede estar seguro buscando 500 o 405 en la barra de título de IE.

Cuando los servicios de Google, como Gmail, experimentan el error, a menudo informan Error temporal (500), o simplemente 500.

Cuando se trata de Windows Update, aparece como un WU_E_PT_HTTP_STATUS_SERVER_ERROR mensaje o 0x8024401F error.

Si el sitio web que informa el error 500 está ejecutando Microsoft IIS, es posible que reciba un mensaje de error más específico:

500 Lista de errores internos del servidor
Código Explicación
500.0 Ocurrió un error de módulo o ISAPI.
500.11 La aplicación se está cerrando en el servidor web.
500.12 La aplicación está ocupada reiniciándose en el servidor web.
500.13 El servidor web está demasiado ocupado.
500.15 No se permiten solicitudes directas de Global.asax.
500.19 Los datos de configuración no son válidos.
500.21 Módulo no reconocido.
500.22 Una configuración de httpModules de ASP.NET no se aplica en el modo de canalización administrada.
500.23 Una configuración de httpHandlers de ASP.NET no se aplica en el modo de canalización administrada.
500.24 Una configuración de suplantación de ASP.NET no se aplica en el modo de canalización administrada.
500.50 Se produjo un error de reescritura durante el manejo de notificaciones RQ_BEGIN_REQUEST. Se produjo un error de ejecución de la regla de entrada o de configuración.
500.51 Se produjo un error de reescritura durante el manejo de notificaciones GL_PRE_BEGIN_REQUEST. Se produjo una configuración global o un error de ejecución de la regla global.
500.52 Se produjo un error de reescritura durante el manejo de la notificación RQ_SEND_RESPONSE. Se produjo una ejecución de regla de salida.
500.53 Se produjo un error de reescritura durante el manejo de la notificación RQ_RELEASE_REQUEST_STATE. Se produjo un error de ejecución de la regla de salida. La regla está configurada para ejecutarse antes de que se actualice la caché de usuario de salida.
500.100 Error de ASP interno.

El trabajo falló. Consulte el registro de eventos en el servidor de destino para obtener más detalles.

------------------------------ BOTONES:

OK

  • Sistema

    • Proveedor
    • EventID 208
    • TimeCreated

    OnProgress, Server1, NT Service SQLSERVERAGENT, Server1_Server1_Transfer Objects Task, <066BD090-26F3-45D8-AD60-B207D56D44CE>, <1CF7B713-F747-45FB-8936-5522651E0C7A>, 5:07 a.m. / 7/2014 10:08:46 AM, 0,0x, la transferencia de la base de datos falló para 1 base de datos (s). OnProgress, Server1, NT Service SQLSERVERAGENT, Server1_Server1_Transfer Objects Task, <066BD090-26F3-45D8-AD60-B207D56D44CE>, <1CF7B713-F747-45FB-8936-5522651E0C7A>, 5:08 / 7/2014 / 7/2014 10:08:46 AM, 100,0x, Transferir objetos terminó la ejecución. OnTaskFailed, Server1, NT Service SQLSERVERAGENT, Server1_Server1_Transfer Objects Task, <066BD090-26F3-45D8-AD60-B207D56D44CE>, <1CF7B713-F747-45FB-8936-5522651E0C7 / AM>, 5: 08/2014 / 7/2014 10:08:46 AM, 0,0x, (nulo) OnPostExecute, Server1, NT Service SQLSERVERAGENT, Server1_Server1_Transfer Objects Task, <066BD090-26F3-45D8-AD60-B207D56D44CE>, <1CF7B713-F747-45FB- 8936-5522651E0C7A>, 7/5/2014 10:08:46 AM, 7/5/2014 10:08:46 AM, 0,0x, (nulo) OnWarning, Server1, NT Service SQLSERVERAGENT, CDW_Server1_Server1_1, <45A6144C- 8DDD-49A6-A6BA-AE81E24826D5>, <1CF7B713-F747-45FB-8936-5522651E0C7A>, 7/5/2014 10:08:46 AM, 7/5/2014 10:08:46 AM, -2147381246,0x, Código de advertencia SSIS DTS_W_MAXIMUMERRORCOUNTREACHED. El método de ejecución tuvo éxito, pero la cantidad de errores generados (1) alcanzó el máximo permitido (1), lo que resultó en un error. Esto ocurre cuando el número de errores alcanza el número especificado en MaximumErrorCount. Cambie MaximumErrorCount o corrija los errores.

    OnPostExecute, Server1, NT Service SQLSERVERAGENT, CDW_Server1_Server1_1, <45A6144C-8DDD-49A6-A6BA-AE81E24826D5>, <1CF7B713-F747-45FB-8936-5522651E0C7 / AM, 5/08/2014 / 2014 10:08:46 AM, 0,0x, (nulo) DiagnosticEx, Server1, NT Service SQLSERVERAGENT, CDW_Server1_Server1_1, <45A6144C-8DDD-49A6-A6BA-AE81E24826D5>, <1CF7B713-F747-45FB65E036-F747-45FB65 , 7/5/2014 10:08:46 AM, 7/5/2014 10:08:46 AM, 0,0x, 104546304 PackageEnd, Server1, NT Service SQLSERVERAGENT, CDW_Server1_Server1_1, <45A6144C-8DDD-49A6-A6BA- AE81E24826D5>, <1CF7B713-F747-45FB-8936-5522651E0C7A>, 7/5/2014 10:08:46 AM, 7/5/2014 10:08:46 AM, 1,0x, Fin de ejecución del paquete.


    ¿Qué es un error 400 de solicitud incorrecta?

    Una solicitud incorrecta 400, también conocida como Error 400 o Error HTTP 400, es percibido por el servidor como un error de cliente genérico y se devuelve cuando el servidor determina que el error no pertenece a ninguna de las otras categorías de códigos de estado.

    El concepto clave que hay que entender aquí es que el error 400 Bad Request es algo que tiene que ver con la solicitud enviada por el cliente. antes de incluso es procesado por el servidor.

    El Grupo de trabajo de ingeniería de Internet (IETF) define la solicitud incorrecta 400 como:

    El código de estado 400 (Solicitud incorrecta) indica que el servidor no puede o no procesará la solicitud debido a algo que se percibe como un error del cliente (por ejemplo, sintaxis de solicitud mal formada, encuadre de mensaje de solicitud no válido o enrutamiento de solicitud engañoso).


    3 respuestas 3

    Actualización: si no ayuda, lea esta discusión (especialmente la última publicación en la página 2): http://forums.asp.net/t/1657582.aspx/2/10?Error+500+0+when+ MVC + se ejecuta + en + IIS7

    Actualización 2: Este también parece muy prometedor: http://forums.asp.net/t/1652026.aspx/1

    eliminar & ltadd verb = "POST, GET" path = "ajax / *. ashx" type = "Ajax.PageHandlerFactory, Ajax" / & gt de httpHandlers

    y agregue & ltadd verb = "POST, GET" name = "scripthandlerajaxFactory" path = "ajax / *. ashx" type = "Ajax.PageHandlerFactory, Ajax" / & gt a manipuladores

    Consulte con la aplicación, tal vez ese sea el comportamiento previsto.

    Tuve exactamente el mismo problema, verifiqué todos los permisos obvios (permiso IIS APPPOOL AppPoolName para el sistema de archivos y la base de datos, acceso de los usuarios autenticados a los directorios "Scripts" y "Content") y todavía no tuve suerte. Incluso Process Monitor no ayudó, no hubo registros de acceso fallidos.

    La solución fue simple: 403.0 era el código de respuesta adecuado. Creía que la aplicación web debería devolver una vista estándar que diga "su cuenta de dominio no aparece en la base de datos, así que váyase" (como deberían hacerlo todas las aplicaciones de este proyecto, esa es una convención que usamos). Pero para esta aplicación, el desarrollador la hizo diferente y devolvió 403.0 simple, que IIS "decoró".


    Ver el vídeo: Устранить ошибку ERROR 500 wordpress 500 internal server error. baksomagnit ошибка 500 на youtube