Question

Une installation Windows Web 2008 x 64 est en cours d'exécution.

En raison de la nécessité pour l'application de pouvoir importer des fichiers Excel, j'ai dû modifier l'application Web pour qu'elle s'exécute en mode 32 bits. Les bibliothèques MSAccess / Excel ne sont pas disponibles en x64.

J'ai également dû créer l'application pour qu'elle s'exécute en confiance = Full. Auparavant, il était inférieur au niveau = moyen.

Existe-t-il une bonne solution de contournement à ce problème? Je veux abaisser le niveau de confiance et ne pas avoir à compromettre l'application à 32 bits simplement parce qu'un écran nécessite une importation Excel (l'utilisation de cet écran n'est pas fréquente également)

Est-il possible de définir un dossier / une page en particulier sur 32 bits dans l’application, le reste étant au format x64. Je ne crois pas que tu peux. Et même pour le niveau de confiance. Le niveau de confiance de l'application est-il spécifique ou puis-je l'envoyer dans un dossier imbriqué?

Était-ce utile?

La solution

Comme FoxFire indique correctement , vous impossible de mélanger du code 32 bits et du code 64 bits dans le même processus.

Toute application ASP.NET devant interagir avec Office nécessite des niveaux de confiance élevés.

Il existe un moyen de contourner ce problème en utilisant une technique appelée "sandboxing".

Vous écrivez un assemblage d'encapsuleur qui effectue exactement le travail que vous souhaitez effectuer avec Excel. Marquez l'assembly avec l'attribut [assembly: AllowPartiallyTrustedCallers] , signez-le puis déployez-le dans le GAC.

Toutes les classes de cet assemblage requises pour communiquer avec les composants Office Interop doivent être attribuées avec [PermissionSet (SecurityAction.Assert, Unrestricted = true)] ou toute autre demande requise.

Cela vous permettra de baisser le niveau de confiance sur votre serveur tout en utilisant les composants Office.

Ceci est basé sur l'hypothèse que vous disposez d'un accès administratif sur le serveur pour pouvoir déposer l'assemblage de sandbox "de confiance" dans le GAC.

Autres conseils

Dans le même processus, vous ne pouvez jamais avoir un mélange 32 bits et 64 bits. Vous pourriez peut-être écrire une deuxième application qui fait le travail Excel pour vous, puis la compiler dans un exécutable 32 bits. Vous pouvez ensuite appeler (exécuter le fichier avec certains paramètres) cet exécutable à partir de votre application Web (vous aurez toujours besoin d'une confiance totale, mais vous pourrez alors exécuter 64 bits).

Modifier: Vous n’avez pas besoin de faire confiance à tout le monde. Vous pouvez également créer un niveau de confiance personnalisé. Mais le fait est qu’il ne fonctionnera pas dans les niveaux de confiance Web standard.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top