Suite

Code d'erreur 500, erreur lors de l'exécution de l'opération d'exécution à partir de la tâche d'impression de l'API ArcGIS pour JavaScript ?

Code d'erreur 500, erreur lors de l'exécution de l'opération d'exécution à partir de la tâche d'impression de l'API ArcGIS pour JavaScript ?


J'essaie d'utiliser la tâche d'impression pour générer un fichier PNG ou PDF de ma carte Web, mais j'obtiens toujours un Code d'erreur 500, erreur lors de l'exécution de l'opération.

Des idées?

J'utilise l'API ArcGIS pour 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 Paysage", "PDF"); }) on(dom.byId("portrait"),'click', function () { printTaskSetup("A4 Portrait", "PDF"); }) function printTaskSetup (layout, format){ 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(print URL, dojoConfig); printTask.submitJob(params, printResult, printError); } fonction printResult(result) { window.open(result.url) } function printError(error) { alert(error); }

cela peut être plus d'une chose, mais je suppose que vous appelez « executer » et que la tâche d'impression est en fait configurée comme asynchrone ou « submitJob » et son synchronisme

pour en être sûr, parcourez le répertoire des services REST pour voir quelle opération le service prend réellement en charge et comparez-la à l'URL que 500s.

si c'est le problème, vous pouvez définir sync/async dans les paramètres du constructeur PrintTask.

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


Une API REST doit-elle renvoyer une erreur de serveur interne 500 pour indiquer qu'une requête fait référence à un objet qui n'existe pas ?

Je travaille avec une API REST qui réside sur un serveur qui gère les données d'une multitude d'appareils IoT.

Ma tâche consiste à interroger le serveur à l'aide de l'API pour collecter des informations de performances spécifiques sur lesdits appareils.

Dans un cas, j'obtiens une liste des appareils disponibles et leurs identifiants correspondants, puis j'interroge plus tard le serveur pour plus de détails à l'aide de ces identifiants (GUID).

Le serveur renvoie une erreur de serveur interne 500 pour une requête sur l'un de ces ID. Dans mon application, une exception est levée et je ne vois pas de détails sur l'erreur. Si j'examine la réponse de plus près avec Postman, je peux voir que le serveur a renvoyé JSON dans le corps qui contient :

errorMessage : "Cet ID n'existe pas" .

Ne tenez pas compte du fait que le serveur a fourni l'ID pour commencer - c'est un problème distinct pour le développeur.

Une API REST doit-elle renvoyer une erreur de serveur interne 500 pour signaler qu'une requête fait référence à un objet qui n'existe pas ? À mon avis, les codes de réponse HTTP devraient se référer strictement au statut de l'appel REST, plutôt qu'aux mécanismes internes de l'API. Je m'attendrais à un 200 OK avec la réponse contenant l'erreur et la description, qui seraient la propriété de l'API en question.

Il me vient à l'esprit qu'il existe une différence potentielle d'attente en fonction de la structure de l'appel REST.

Dans le premier cas, l'ID de l'appareil est passé en tant que variable GET. Un 404 ou 500 indiquerait que le chemin ( /restapi/deviceinfo ) n'est pas trouvé ou a entraîné une erreur de serveur.

Dans le second cas, l'ID de l'appareil fait partie de l'URL. Je comprendrais mieux un 404 Not Found , mais je pourrais toujours discuter en fonction des parties du chemin interprétées comme des variables par rapport aux points de terminaison.


Mise à jour : cette réponse couvre la classification générale des erreurs. Pour une réponse plus spécifique sur la meilleure façon de gérer la requête exacte de l'OP, veuillez consulter les autres réponses à cette question

Dans MySQL, vous ne pouvez pas modifier la même table que vous utilisez dans la partie SELECT.
Ce comportement est documenté sur : http://dev.mysql.com/doc/refman/5.6/en/update.html

Peut-être que vous pouvez simplement joindre la table à elle-même

Si la logique est suffisamment simple pour remodeler la requête, perdez la sous-requête et joignez la table à elle-même, en utilisant des critères de sélection appropriés. Cela amènera MySQL à voir la table comme deux choses différentes, permettant aux modifications destructrices d'aller de l'avant.

Vous pouvez également essayer d'imbriquer la sous-requête plus profondément dans une clause from .

Si vous avez absolument besoin de la sous-requête, il existe une solution de contournement, mais elle est moche pour plusieurs raisons, notamment les performances :

La sous-requête imbriquée dans la clause FROM crée un table temporaire implicite, il ne compte donc pas comme la même table que vous mettez à jour.

. mais attention à l'optimiseur de requêtes

Cependant, sachez qu'à partir de MySQL 5.7.6 et au-delà, l'optimiseur peut optimiser la sous-requête et vous donner toujours l'erreur. Heureusement, la variable Optimizer_switch peut être utilisée pour désactiver ce comportement, bien que je ne puisse pas recommander de le faire comme autre chose qu'une solution à court terme ou pour de petites tâches ponctuelles.

Merci à Peter V. Mørch pour ce conseil dans les commentaires.

L'exemple de technique était de Baron Schwartz, publié à l'origine chez Nabble, paraphrasé et étendu ici.


  • le plus souvent, écrire sur une connexion lorsque l'autre extrémité l'a déjà fermée
  • moins souvent, le pair fermant la connexion sans lire toutes les données déjà en attente de son côté.

Donc, dans les deux cas, vous avez un protocole d'application mal défini ou mis en œuvre.

Il existe une troisième raison que je ne documenterai pas ici, mais qui implique que le pair prenne des mesures délibérées pour réinitialiser plutôt que de fermer correctement la connexion.

Dans notre cas, nous avons rencontré cela lors d'un test de charge sur notre serveur d'applications. Le problème s'est avéré que nous devions ajouter de la mémoire supplémentaire à notre JVM car elle était épuisée. Cela a résolu le problème.

Essayez d'augmenter la mémoire disponible pour la JVM et/ou surveillez l'utilisation de la mémoire lorsque vous obtenez ces erreurs.

SocketException : tuyau cassé, est causé par « l'autre extrémité » (le client ou le serveur) fermant la connexion pendant que votre code est en train de lire ou d'écrire sur la connexion.

Il s'agit d'une exception très courante dans les applications client/serveur qui reçoivent du trafic de clients ou de serveurs en dehors du contrôle de l'application. Par exemple, le client est un navigateur. Si le navigateur passe un appel Ajax et/ou que l'utilisateur ferme simplement la page ou le navigateur, cela peut effectivement tuer toute communication de manière inattendue. Fondamentalement, vous verrez cette erreur à chaque fois que l'autre extrémité terminera son application, et vous ne l'aviez pas prévu.

Si vous rencontrez cette exception dans votre application, cela signifie que vous devez vérifier votre code à l'emplacement de l'IO (entrée/sortie) et l'envelopper avec un bloc try/catch pour intercepter cette exception IO. C'est ensuite à vous de décider comment vous voulez gérer cette situation semi-valide.

Dans votre cas, le premier endroit où vous avez encore le contrôle est l'appel à HttpMethodDirector.executeWithRetry - Assurez-vous donc que l'appel est enveloppé avec le bloc try/catch et gérez-le comme bon vous semble.

Je déconseille fortement de consigner les erreurs spécifiques à SocketException-Broken Pipe à autre chose que les niveaux de débogage/trace. Sinon, cela peut être utilisé comme une forme d'attaque DOS (Denial Of Service) en remplissant les journaux. Essayez de renforcer et de tester négativement votre application pour ce scénario courant.


Les journaux WindowsApplication dans l'Observateur d'événements Windows peuvent avoir des indices à ce sujet.

Dans mon cas, cela produit un événement comme

Échec de la génération du contexte d'activation pour "C:Program Files (x86)Microsoft Visual Studio 12.0VCinCL.exe".Erreur dans le fichier manifeste ou de stratégie "C:Program Files (x86)Microsoft Visual Studio 12.0 VCinCL.exe.Config" à la ligne 0. Syntaxe Xml non valide.

Je supprime simplement ce fichier .config et cela fonctionne.

Cela m'arrive lorsque le scanner de virus agressif de mon organisation détecte secrètement ces fichiers comme malveillants et les supprime en arrière-plan.

Dans mon cas, changer les règles de l'antivirus résout ce problème.

Cette erreur se produira avec plusieurs outils lors du lancement de MSBuild à partir de la ligne de commande :

les ajouter à la liste d'exclusion de l'antivirus actif peut résoudre certains des problèmes, mais ne suffira pas avec un antivirus moderne.

Une alternative consiste à désactiver Tracker.exe qui est un outil qui permet des builds incrémentiels. Comme ce n'est généralement pas quelque chose que vous voulez sur un serveur de build, j'ai trouvé qu'il était sûr de le désactiver.

Vous pouvez le désactiver en passant ce paramètre à msbuild : /p:TrackFileAccess=false


&ldquoLa connexion sous-jacente a été fermée : une erreur inattendue s'est produite lors d'un envoi.&rdquo Avec certificat SSL

Problème : J'obtiens cette exception "LA CONNEXION SOUS-JACENTE A ÉTÉ FERMÉE : UNE ERREUR INATTENDUE S'EST PRODUITE SUR UN ENVOI" dans mes journaux et cela interrompt notre intégration OEM avec notre système de marketing par e-mail à des heures aléatoires variant de [1 heure à 4 heures]

Mon site Web est hébergé sur un serveur Windows 2008 R2 avec IIS 7.5.7600. Ce site Web contient un grand nombre de composants OEM et un tableau de bord complet. Tout fonctionne bien avec tous les autres éléments du site Web, à l'exception de l'un de nos composants de marketing par e-mail que nous utilisons comme solution iframe dans notre tableau de bord. La façon dont cela fonctionne est que j'envoie un objet httpWebRequest avec toutes les informations d'identification et je récupère une URL que je mets dans un iframe et cela fonctionne. Mais cela ne fonctionne que pendant un certain temps [1 heure - 4 heures] et puis j'obtiens l'exception ci-dessous "LA CONNEXION SOUS-JACENTE A ETE FERMEE: UNE ERREUR INATTENDUE S'EST OBTENUE SUR UN ENVOI" et même si le système essaie d'obtenir l'URL à partir du httpWebRequest il échoue avec la même exception. La seule façon de le faire fonctionner à nouveau est de recycler le pool d'applications ou tout est modifié dans web.config. Je suis vraiment épuisé toutes les options auxquelles je pouvais penser.


Plus de façons dont vous pourriez voir une erreur de serveur interne

Dans Internet Explorer, le message Le site ne peut pas afficher la page indique souvent une erreur de serveur interne HTTP 500. Une erreur 405 Method Not Allowed est une autre possibilité, mais vous pouvez être sûr en recherchant soit 500 ou alors 405 dans la barre de titre d'IE.

Lorsque les services Google, tels que Gmail, rencontrent l'erreur, ils signalent souvent un Erreur temporaire (500), ou simplement 500.

Lorsque Windows Update est impliqué, il apparaît comme un WU_E_PT_HTTP_STATUS_SERVER_ERROR message ou 0x8024401F Erreur.

Si le site Web qui signale l'erreur 500 exécute Microsoft IIS, un message d'erreur plus spécifique peut s'afficher :

500 Liste d'erreurs du serveur interne
Code Explication
500.0 Une erreur de module ou ISAPI s'est produite.
500.11 L'application s'arrête sur le serveur Web.
500.12 L'application est en train de redémarrer sur le serveur Web.
500.13 Le serveur Web est trop occupé.
500.15 Les demandes directes pour Global.asax ne sont pas autorisées.
500.19 Les données de configuration ne sont pas valides.
500.21 Module non reconnu.
500.22 Une configuration httpModules ASP.NET ne s'applique pas en mode Pipeline géré.
500.23 Une configuration ASP.NET httpHandlers ne s'applique pas en mode Pipeline géré.
500.24 Une configuration d'emprunt d'identité ASP.NET ne s'applique pas en mode Pipeline géré.
500.50 Une erreur de réécriture s'est produite lors de la gestion de la notification RQ_BEGIN_REQUEST. Une erreur de configuration ou d'exécution de règle entrante s'est produite.
500.51 Une erreur de réécriture s'est produite lors de la gestion de la notification GL_PRE_BEGIN_REQUEST. Une erreur de configuration globale ou d'exécution de règle globale s'est produite.
500.52 Une erreur de réécriture s'est produite lors du traitement de la notification RQ_SEND_RESPONSE. Une exécution de règle sortante s'est produite.
500.53 Une erreur de réécriture s'est produite lors de la gestion de la notification RQ_RELEASE_REQUEST_STATE. Une erreur d'exécution de règle sortante s'est produite. La règle est configurée pour être exécutée avant que le cache utilisateur de sortie ne soit mis à jour.
500.100 Erreur ASP interne.

Le travail a échoué. Consultez le journal des événements sur le serveur de destination pour plus de détails.

------------------------------ BOUTONS:

d'accord

  • Système

    • Fournisseur
    • ID d'événement 208
    • TempsCréé

    OnProgress,Server1,NT ServiceSQLSERVERAGENT,Server1_Server1_Transfer Objects Task,<066BD090-26F3-45D8-AD60-B207D56D44CE>,<1CF7B713-F747-45FB-8936-5522651E0C7A>,5/7/2014 10:08:46 AM /7/2014 10:08:46 AM,0,0x,Le transfert de la base de données a échoué pour 1 base(s) de données. OnProgress,Server1,NT ServiceSQLSERVERAGENT,Server1_Server1_Transfer Objects Task,<066BD090-26F3-45D8-AD60-B207D56D44CE>,<1CF7B713-F747-45FB-8936-5522651E0C7A>,5/7/2014 10:08:46 AM /7/2014 10:08:46 AM,100,0x,L'exécution des objets de transfert a été terminée. OnTaskFailed,Server1,NT ServiceSQLSERVERAGENT,Server1_Server1_Transfer Objects Task,<066BD090-26F3-45D8-AD60-B207D56D44CE>,<1CF7B713-F747-45FB-8936-5522651E0C7A>,5/7/2014 10:08 /7/2014 10:08:46 AM,0,0x,(null) OnPostExecute,Server1,NT ServiceSQLSERVERAGENT,Server1_Server1_Transfer Objects Task,<066BD090-26F3-45D8-AD60-B207D56D44CE>,<1CF7B713-F747-45FB- 8936-5522651E0C7A>, 5/7/2014 10:08:46 AM, 5/7/2014 10:08:46 AM,0,0x,(null) OnWarning,Server1,NT ServiceSQLSERVERAGENT,CDW_Server1_Server1_1,<45A6144C- 8DDD-49A6-A6BA-AE81E24826D5>,<1CF7B713-F747-45FB-8936-5522651E0C7A>,5/7/2014 10:08:46 AM, 5/7/2014 10:08:46 AM,-2147381246,0x, Code d'avertissement SSIS DTS_W_MAXIMUMERRORCOUNTREACHED. La méthode d'exécution a réussi, mais le nombre d'erreurs générées (1) a atteint le maximum autorisé (1), ce qui a entraîné un échec. Cela se produit lorsque le nombre d'erreurs atteint le nombre spécifié dans MaximumErrorCount. Modifiez le MaximumErrorCount ou corrigez les erreurs.

    OnPostExecute,Server1,NT ServiceSQLSERVERAGENT,CDW_Server1_Server1_1,<45A6144C-8DDD-49A6-A6BA-AE81E24826D5>,<1CF7B713-F747-45FB-8936-5522651E0C7A>,5/7/2014 10:08:46 AM /2014 10:08:46 AM,0,0x,(null) DiagnosticEx,Server1,NT ServiceSQLSERVERAGENT,CDW_Server1_Server1_1,<45A6144C-8DDD-49A6-A6BA-AE81E24826D5>,<1CF7B713-F747-45FB-8936-5522651E0C7A> , 07/05/2014 10:08:46 AM, 07/05/2014 10:08:46 AM,0,0x,104546304 PackageEnd,Server1,NT ServiceSQLSERVERAGENT,CDW_Server1_Server1_1,<45A6144C-8DDD-49A6-A6BA- AE81E24826D5>,<1CF7B713-F747-45FB-8936-5522651E0C7A>, 07/05/2014 10:08:46 AM, 07/05/2014 10:08:46 AM,1,0x,Fin d'exécution du package.


    Qu'est-ce qu'une erreur de requête 400 incorrecte ?

    Une demande incorrecte de 400, également connue sous le nom de 400 erreur ou alors Erreur HTTP 400, est perçu par le serveur comme une erreur client générique et est renvoyé lorsque le serveur détermine que l'erreur n'appartient à aucune des autres catégories de code d'état.

    Le concept clé à comprendre ici est que l'erreur 400 Bad Request est quelque chose qui a à voir avec la demande soumise par le client avant il est même traité par le serveur.

    L'Internet Engineering Task Force (IETF) définit la 400 Bad Request comme :

    Le code d'état 400 (Mauvaise demande) indique que le serveur ne peut pas ou ne traitera pas la demande en raison de quelque chose qui est perçu comme une erreur du client (par exemple, une syntaxe de demande mal formée, un cadrage de message de demande non valide ou un routage de demande trompeur).


    3 réponses 3

    Mise à jour : si cela ne vous aide pas, lisez cette discussion (en particulier le dernier message de la page 2) : http://forums.asp.net/t/1657582.aspx/2/10?Error+500+0+when+ MVC+exécute+sur+IIS7

    Mise à jour 2 : Celui-ci semble également très prometteur : http://forums.asp.net/t/1652026.aspx/1

    supprimer <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" //gt de httpHandlers

    et ajoutez <add verb="POST,GET" name="scripthandlerajaxFactory" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" /> à gestionnaires

    Veuillez vérifier avec l'application, c'est peut-être le comportement voulu.

    J'ai eu exactement le même problème, vérifié toutes les autorisations évidentes (autorisation IIS APPPOOLAppPoolName sur le système de fichiers et la base de données, accès des utilisateurs authentifiés aux répertoires "Scripts" et "Contenu") et toujours pas de chance. Même Process Monitor n'a pas aidé, il n'y a eu aucun échec des journaux d'accès.

    La solution était simple - que 403.0 était le bon code de réponse. Je pensais que l'application Web devait renvoyer une vue standard indiquant "votre compte de domaine n'est pas répertorié dans la base de données, alors allez-y" (comme toutes les applications de ce projet devraient le faire, c'est une convention que nous utilisons). Mais pour cette seule application, le développeur l'a rendue différente et a renvoyé un simple 403.0, qu'IIS a "décoré".


    Voir la vidéo: Internal Server Error Comment corriger une erreur 500 internal server sur votre site