Un petit billet suite à un problème rencontre avec le contrôle "RadAsyncUpload" de Telerik sous DotNetNuke.
Une petite présentation concernant ce contrôle pour ceux qui ne connaitraient pas : ce contrôle permet de remonter des fichiers de façon asynchrone sur le serveur. Exemple d'utilisation : vous souhaitez donner la possibilité à vos utilisateur de remonter des fichiers images sur votre site et de les visualiser dans la foulée sur la même page sans valider cette dernière (pas de postback donc).
Après avoir mis en place ce contrôle dans un module DNN, je me trouvais face à joli problème : chaque upload de fichier tombait en erreur (un point d'exclamation rouge à gauche du nom du fichier). Aucun événement serveur ne se levait et sur le client l'évément "onClientFileUploadFailed" se levait bien mais la méthode "args.get_serverResponse()" ne retournait aucune erreur (voir
ce message sur le forum de Telerik).
Pourtant j'avais déjà utilisé ce contrôle sous DNN avec succès sous un autre projet. Alors pourquoi cela a-t-il déjà marché et cela ne marche-t-il plus ? En fait le projet sous lequel le contrôle marchait avait une particularité : les utilisateurs ne s'identifiaient pas ! La clef était là, en effet si je ne m'identifiais pas le contrôle fonctionnait sinon il y avait systématiquement l'erreur.
Me voilà donc rendu à éplucher le module de connexion DNN, et après avoir désactivé chaque ligne j'ai enfin trouvé LA cause du problème : Response.Redirect(...,
True). Dans le module de connexion, une fois que l'utilisateur est identifié, une redirection est effectuée avec le paramètre "True" (indiquant que le traitement de la page en-cours doit s'arrêter). En passant ce paramètre à "False", plus de problème.
Heureusement pour moi j'avais mon propre module de connexion, donc pas de soucis pour modifier cela. Si ce n'est pas votre cas... vous savez ce qu'il vous reste à faire.