Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNDéveloppementDéveloppementDNN4 - Problèmes de permissions.DNN4 - Problèmes de permissions.
Précédente
 
Suivante
Nouveau message
15/11/2010 10:20
 
Bonjour à tous,

J'aimerais utiliser un système de conversion de PDF en Texte sur un module.
J'ai trouvé une bibliothèque Pdf2Text sur le net, en C#, impeccable.
Seulement, lorsque je veux l'intégrer dans mon DNN, j'ai des problème de permission.

Rien que le fait de déposer les dll dans le bin, il me fait une page d'erreur: :
System.Security.Policy.PolicyException: Impossible d'acquérir les autorisations requises.

Je pense qu'il faut rajouter un truc dans le web.config, mais je ne sais pas quoi et ou (j'aimerais ne pas baisser le niveau de sécurité général, si c'est possible).

Pour infos, c'est la DLL IKVM.Runtime.dll (c'est joint avec PDFBox-0.7.3.dll, ne me demandez pas ce que c'est exactement).

Pouvez vous m'aider ?

Merci d'avance.

David.
 
Nouveau message
17/11/2010 16:47
 
Bonjour David,

C'est typiquement un problème lié à ASP.NET et dépend principalement de ce que fait ta dll en interne. Il faut comprendre que sous .Net on travaille en isolation pour éviter des problèmes de sécurité. Donc par défaut, les exécutables héritent du minimum de droits requis pour leur fonctionnement. J'ai déjà eu le même problème il y a quelques années avec une librairie pdf du commerce. J'avais réussi la faire fonctionner en l'enregistrant dans la GAC. Tout dépend de ton hébergement, si c'est du mutualisé il n'y a pratiquement aucune chance que ton hébergeur accepte d'enregistrer une dll quelconque dans la GAC du serveur ! En revanche, si tu es sur un serveur dédié (virtuel ou réel) tu devrais réussir. Je n'ai plus la manipulation en tête, mais si tu cherche un peu sur MSDN et Google tu devrais trouver facilement.

Une autre possibilité si la dll ne requière pas des droits trop important est de passer ton site en full trust (il peut encore y avoir des restrictions suivant ton hébergeur). Pour ce faire, tu ouvre ton fichier web.config et tu cherche la ligne ci-dessous :

<trust level="Medium" originUrl=".*" />

Tu remplace Medium par Full et tu fais un test, il est possible (mais pas garanti) que cela fonctionne.

Gilles
 
Nouveau message
17/11/2010 17:03
 
Bonjour Gilles,

Merci pour ta réponse... Même si ce n'est pas celle que j’espérais. 0_0

En effet, je suis en mutualisé. Mais j'ai quand même regardé un peu pour l'ajouter à la GAC, et c'est un peu le 13ème travail d'hercule.
J'ai également essayé de baisser le niveau de sécurité, mais à terme, ce n'est pas envisageable, et en plus, je ne peux pas être en mode débug avec un niveau en dessous de celui auquel je suis actuellement.

Je me demandais si je pouvais utiliser l'exe directement fait avec visual C#, qui me crée un fichier texte contenant le contenu du PDF, mais c'est encore mieux, j'ai "Erreur critique. Échec de la demande.".

Pourtant, c'est un exe à la racine d'un module.

Donc, ma solution alternative: Comment lancer un exe depuis le script ?

David.
 
Nouveau message
17/11/2010 18:11
 
Re,

Attention, passer de Medium à Full Trust ce n'est pas baisser le niveau de sécurité ! Le niveau Trust est le niveau le plus élevé pour une application ASP.NET et ce niveau sera probablement requis par ta dll. En fait, parmi les différences entre Medium et Full Trust, figure l'accès au dossier Temp de la machine. Ainsi une appli qui fonctionne dans le mode Medium ne peut pas connaitre le chemin d'accès au dossier temporaire ! Compte tenu que ta dll doit très probablement créer un fichier temporaire lors de la conversion ET que logiquement le programmeur fera appel aux méthodes du framework .Net pour connaitre de dossier Temp et créer dedans un fichier temporaire, il y a donc peu de chance qu'elle fonctionne en Medium Trust !
De même le débogage fonctionne parfaitement en Full ET en Medium Trust, je peux te l'affirmer car je teste toujours le module Store dans les deux modes. Un autre exemple de différence entre Medium et Full est que le mode Medium n'autorise PAS l'application à faire référence à des url d'un autre domaine. Manque de bol, pour une boutique en ligne c'est bien pratiquement d'appeler les images d'un produit sur le serveur du fabriquant. Donc, ce n'est possible QUE si ton instance DNN peut tourner en mode Full ! CQFD. :-)
Enfin, n'espère même pas pouvoir lancer un exécutable si tu n'as pas les droits pour faire fonctionner une simple dll ! Toutefois, voici comment lancer un exe depuis .Net :

C#

System.Diagnostics.Process Proc = new System.Diagnostics.Process();
Proc.StartInfo.FileName = "nomdufichier.exe";
Proc.Start();

VB

Dim Proc As New System.Diagnostics.Process()
Proc.StartInfo.FileName = "nomdufichier.exe"
Proc.Start()

Gilles
 
Nouveau message
18/11/2010 08:17
 
Merci pour toutes ces infos précises.

Je vais tester ça très prochainement.

David.
 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNDéveloppementDéveloppementDNN4 - Problèmes de permissions.DNN4 - Problèmes de permissions.