FAQ XMLRADConsultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 55, dernière mise à jour : 26 octobre 2006
- A quoi corespondent les erreurs du genre -1072894406 ?
- Que signifie le message WAIT_TIMEOUT ?
- Problème d'affichage dans le navigateur (Skin, Pictos)
- Comment obtenir des messages d'exception localisés ?
- Erreur dans le fichier web.config sur la ligne authentication mode='Windows'
- Erreur à l'affichage d'un rapport PDF avec Acrobat.
- Database not assigned
- j'ai l'erreur: XMLRAD cannot load debug file. You must debug the XMLService before.
- J'ai l'erreur Cannot load result from invoke http action
- J'ai l'erreur 'Erreur lors du chargement de la bibliothque/DLL du type'
Error -1072894406 on line 1, char 0 in "" A document must contain exactly one root element
Error -1072894419 on line 1, char 1 in "" Incorrect document syntax
Error -1072894405 on line 3, char 11 in "" The name in the end tag of the element must match the element type in the start tag
Ces erreurs interviennent lorsqu'un document XML n'est pas bien formé.
Pour la première erreur, le document XML a plusieurs racines.
Exemple:
<
document
/
>
<
datas
>
<
data
>
data1<
/
data
>
<
/
datas
>
un document XML qu'un seul élement racine.
<
document
>
<
datas
>
<
data
>
data1<
/
data
>
<
/
datas
>
<
/
document
>
Pour les autres erreurs, le document XML n'est pas bien formé (erreur de syntaxe dans une balise, manque une balise fermante.) ou bien c'est un simple fichier texte.
Les applications XMLRAD peuvent gérer un nombre donné de requêtes HTTP en même temps. Un thread gère une requête à la fois.
Lorsqu'une requête est distribuée à un thread, ce thread devient non disponible jusqu'à que la requête soit entièrement traitée et que la réponse soit renvoyée au client.
Le thread sera à nouveau disponible pour une autre requête quand la précédente est complètement traitée.
Si plusieurs requêtes HTTP sont envoyées, tous les threads sont occupés. les autres requêtes sont alors mises dans une file d'attente pour un temps donné (XMLC_MaxWaitingTime). Lorsqu'une requête attend plus longtemps que le temps d'attente autorisé, la requête est tuée et le client reçoit un message d'erreur WAIT_TIMEOUT.
Que peut-on faire pour éviter ce message ?
Ce message signifie souvent que votre application est trop lente, ou votre serveur n'est pas assez puissant pour gérer toutes les requêtes. Vérifiez les statistiques de l'application: De mauvaises requêtes SQL consomme trop de temps CPU. Essayez d'optimiser votre code SQL, ajoutez des index manquants, etc.
Vous pouvez aussi modifier certains paramètres pour permettre un temps d'attente plus long, ou pour gérer plus de requêtes concurrentes.
XMLC_MaxWaitingTime (Initparams, Par defaut: 2000(ms)): Vous pouvez mettre un temps plus long. Les requêtes resteront plus longtemps dans la file d'attente avant dêtre tuées.
XMLC_ThreadPerProc (InitParams, Par defaut: 1): Nombre de threads par processeur. Le mieux est de mettre 1 thread par processeur. Plus de thread permet plus de requêtes concurrentes, mais chaque requête sera plus longue à traiter. Si votre serveur à 2 processeurs, le framework en créera automatiquement 2.
XMLC_Threads (InitParams, Par defaut: ''): Fixe le nombre de threads à créer. Cette option n'est pas dépendante du nombre de processeurs.
XMLC_ThreadAdditional (Initparams, Par defaut: 1): Nombre de threads additionnels à créer.
Avec la configuration par défaut, sur un bi-processeur, le framework cré 3 threads (1 par processeur + 1 additionel), permettant à l'application de gérer 3 requêtes différentes en même temps.
Vérifiez les niveaux de mémoires de votre serveur, l'utilisation CPU et augmenter si nécessaire.
Certains pictos ou images de skins ne sont pas affiché dans le navigateur.
J'ai besoin de rafraichir toute la page 2 fois ou plus pour avoir un rendu normal.
j'ai une erreur du type (-2147417842 (0x8001010e)) ou le message "L'application a appelé une interface qui était maintenue en ordre pour une thread différente."
Que dois-je faire ?
- Vérifiez l'alias Bin de votre application (IIS)
La protection d'application doit être en niveau bas.
Toutes les DLL ISAPI ont besoin de cette configuration. Les autres valeurs (Moyen et Haut) sont réservés pour les pages ASP. - Vérifiez La configuration du cache de votre navigateur, il devrait être en atomatique, pour bénéficier de la fonctionnalité.
Lorsque vous testez votre application sur un serveur IIS sur un Windows 2000 Pro, IIS peut servir seulement 10 requête HTTP simultanément. Lorsque le cache du navigateur n'est pas bien configuré, le navigateur envoye plusieurs requête HTTP en parallèle pour récupérer toutes les images et IIS peut refuser la connexion. Il peut en résulter un affichage chaotique avec des images affichée aléatoirement dans le navigateur. Windows 2000 serveur n'a pas cette limitation
Les applications XMLRAD avec les Mesages d'Applications (Applications Messages) bénéficient de la traduction des messages d'exception.
Toutes les traductions des messages d'exception sont centralisées dans un seul document XML.
XMLRAD cherche une correspondace dans ce document XML et affiche la bonne traduction, en fonction des préférences utilisateurs.
Les développeurs lèvent une exception en utilisant XMLRequest.RaiseError. Le message d'exception est un mot clé unique.
if
Context.Values['
ORG_NAME
'
] = '
'
then
XMLRequest.RaiseError('
ERR_ORG_NAME_BLANK
'
, '
UpdateORGANIZATION
'
);
if
(Context.
GetValue
("
ORG_NAME
"
) =
=
"
"
)
{
XMLRequest.
RaiseError
("
ERR_ORG_NAME_BLANK
"
,
"
UpdateORGANIZATION
"
);
}
if
(Context.
GetValue
("
ORG_NAME
"
) =
=
"
"
)
{
XMLRequest.
RaiseError
("
ERR_ORG_NAME_BLANK
"
,
"
UpdateORGANIZATION
"
);
}
if
(context.getValue
("
ORG_NAME
"
).equals
("
"
))
{
xmlRequest.raiseError
("
ERR_ORG_NAME_BLANK
"
, "
UpdateORGANIZATION
"
);
}
Puis, vous avez à traduire ce mot clé en utilisant les Messages d'Application. Il se trouve dans le menu Ressources du gestionnaire de projet.
Une fois que le mot clé a été ajouté, lorsqu'une exception est levée, l'application cherche une correspondance entre le message d'exception (ie, le mot clé) et une entrée dans la table des messages d'applications. L'application affiche alors la traduction correcte si une correspondance est trouvée.
Pour aller plus loin:
Le composant xslc:ApplicationMessages gère l'affichage du message d'erreur localisé.
Si vous avez l'erreur suivante:
Server Error in
'
/
'
Application.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Configuration Error
Description:
An error occurred during the processing of a configuration file required to service this
request.
Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message:
It is
an error to use a section registered as
allowDefinition=
'
MachineToApplication
'
beyond application level.
This error can be caused by a virtual
directory not being configured as
an application in
IIS.
Source Error:
Line 36
:
"
Passport
"
and "
None
"
Line 37
:
-
-
>
Line 38
:
<
authentication mode=
"
Windows
"
/
>
Line 39
:
Source File:
C:
\Program Files\Delos\Demos\DotNet\PlushShop\Bin\web.
config Line:
38
Cela provient surement du fait que vous n'avez pas créer d'application pour cet alias. Allez dans les propriétés de l'alias, onglet répertoire virtual, et dans les paramètres d'application, cliquez sur le bouton créer.
Si vous avez l'erreur "Le fichier est endommagé et n'a pas pu être réparé" en essayant de visualiser votre rapport PDF, Acrobat Reader a peut être des problèmes avec l'affichage à l'intérieur du navigateur. Il est en général recommandé d'afficher le fichier PDF dans Acrobat Reader à l'exterieur du navigateur. Pour cela aller dans les préférences (Edit/Preferences), section Internet, désactiver l'option Display in Browser.
Internet Explorer supporte un peu mal la compression gzip pour un document PDF. Si vous avez des problèmes, désactivez la compression pour le XMLService renvoyant le PDF au navigateur en mettant dans le Context pour cette action XMLC_Gzip à 0.
Par exemple: http://localhost/DemosBin/Training/Bin/Training.dll/ReportFormORGANIZATION?ORG_ID=103&XMLC_GZIP=0
A la base ce message d'erreur intervient lorsqu'une requête (DacQuery, DBExtract, DBBatch, n'est pas assigné à une source de données/Database). Mais ce cas peut intervenir pour plusieurs raisons:
Pour une version antérieure à XMLRAD 2005, vérifiez que le nom de la datasource dans les instructions DBExtract et DBBatch est bien spécifié et que le nom correspond à une datasource définie.
A partir de la version 2005 et l'introduction des pools, il faut en plus vérifier que les datasources sont affectées à un ou plusieurs pools, et que les XMLModules sont eux aussi affecté aux mêmes pools que les DataSources.
Si vous voulez afficher le dernier debug généré, mais que vous n'en avez jamais généré, ce message est cohérent.
Si vous voulez debuguer un XMLService, mais malgré XMLC_Debug = 1 dans les InitParams et le mode debug du XMLService coché, vous obtenez le message d'erreur "XMLRAD cannot load debug file. You must debug the XMLService before.", alors votre application a probablement rencontré un problème de droit d'accès au système de fichier.
Vérifiez les utilisateurs ayant les droits d'accès en écriture sur le dossier \$Delos\Projects\{MyProject}\Data.
Dans le cas d'une application .NET, assurez vous que l'utilisateur ASPNET possède les droits en écriture sur \Data et ses dossiers enfant. Le même problème peut affecter la gestion des Logs.
si vous avez l'erreur "Cannot load result from invoke http action" ou bien "The XML file cannot be displayed, as XMLRAD couldn't invoke the application to get a sample content. Please check that the aliases are correctly configured and that the web server is launched." c'est que votre application n'est pas bien configurée et que XMLRAD ne peut pas l'invoquer correctement.
XMLRAD invoque l'application pour générer le document XML (OutputDoc) qu'il va utiliser pour la conception. Si l'application n'est pas correctement configurée, l'appel échoue et vous avez donc les messages d'erreur cités.
Vérifiez que votre application se lance correctement, ou que l'InvokePath dans la configuration du projet dans XMLRAD est correct.
Si vous avez l'erreur "Erreur lors du chargement de la bibliothque/DLL du type" c'est que l'un des fichiers .tlb (DAC.tlb ou StdXML.tlb) n'arrive pas a etre chargé.
Ces fichiers doivent etre présent soit dans le répertoire de votre application (répertoire de la DLL) soit dans le répertoire Windows\System32.
Vérifiez bien aussi que ce sont les bonnes versions:
XMLRAD 7 RC3:
- DAC.tlb: 22/10/2002
- StdXML.tlb: 22/04/2003
XMLRAD 8 P2:
- DAC.tlb: 26/08/2003
- StdXML.tlb: 26/08/2003
XMLRAD 2005 R1 & R2:
- DAC.tlb: 26/08/2003
- StdXML.tlb: 26/08/2003