Après le déploiement de la nouvelle version de notre application ASP.NET 2.0, il a commencé à lever une exception de sécurité: "System.Security.SecurityException: Demande d'autorisation de type 'System.Web.AspNetHostingPermission, System, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' a échoué. ". Après une recherche rapide sur internet, nous avons pu résoudre ce problème en réglant "Load User Profile" sur True dans le pool d'applications IIS 7.5. Cette solution est également mentionné à plusieurs reprises ici sur stackoverflow:Exceptions de sécurité dans les options ASP.NET et Load User Profile dans IIS 7.5
- Strange ASP.NET error !
- System.Web.AspNetHostingPermission Exception on New Deployment
- Running a asp.net web application project on IIS7 throws exception
Cependant, nous avons pu trouver des raisons pour lesquelles il doit être vrai. Nous avons passé en revue tous les changements dans la nouvelle version (heureusement il n'y en avait que quelques-uns), mais n'avons rien trouvé de suspect (pas d'accès au registre ou aux données temporaires comme certains articles le suggéraient). Est-ce que quelqu'un pourrait nous donner des indications quand une application ASP.NET hébergée dans IIS 7.5 a besoin de l'option "Load User Profile" définie sur True?
Détails:
- pool d'applications: .NET 2.0; Mode Pipeline géré - Classique; Identité - compte de domaine personnalisé
- Dans IIS 6.0 (W2K3): Ancien et nouveau version de travail d'application bien
- Dans IIS 7.5 (W2K8-R2): Ancienne version d'application fonctionne très bien; nouvelle version d'application soulève la sécurité exception - il commence à travailler après réglage « Charger le profil de l'utilisateur » True
Merci!
EDIT: Nous avons finalement trouvé la cause de ce problème! Notre administrateur a utilisé une technique différente pour copier la nouvelle version de l'application depuis l'environnement de transfert vers l'environnement de production. Il a utilisé le serveur web comme intermédiaire. Après avoir téléchargé des artefacts de génération de versions compressées vers l'environnement de production et ensuite décompressé les fichiers, ils étaient toujours marqués comme "bloqués" parce qu'ils provenaient d'un ordinateur différent. Voir aussi https://superuser.com/questions/38476/this-file-came-from-another-computer-how-can-i-unblock-all-the-files-in-a. ASP.NET exécute ensuite logiquement ces binaires en confiance partielle au lieu de l'approbation totale et qui provoquait réellement les exceptions de sécurité mentionnées dans notre application.
La définition de «Load User Profile» sur True a corrigé les exceptions de sécurité en tant qu'effets secondaires. Si "Load User Profile" est défini sur False, alors notre application (pas notre code, peut-être un peu.NET BCL ou assembly externe) tente d'interroger des informations de base sur le répertoire "C: \ Windows \ System32 \ config \ systemprofile \ AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files" dont l'identité du pool d'applications n'est pas autorisée:
- Avec pleine confiance: accès refusé à cette opération de requête ne soulève pas d'exception
- Avec confiance partielle: refuser l'accès à cette opération de requête soulève exception de sécurité
Si « Load profil utilisateur » est défini sur True, le profil temporaire du répertoire Utilisateurs est créé chaque fois que le pool d'applications démarre. Notre application essaie alors d'interroger des informations sur le répertoire "Temporary Internet Files" de ce profil, auquel l'identité du pool d'applications est autorisée. Aucune exception n'est donc levée même avec une confiance partielle.
Très bonne session de dépannage! :)
Merci pour le travail d'enquête Peter, j'ai eu le même problème et l'utilitaire de flux (répertorié dans la question superuser.com) était comment j'ai débloqué tous les fichiers dans le répertoire de mon webapp. Et maintenant je peux désactiver l'option Load User Profile! –
Totalement excellent, nous avons juste rencontré ce problème et n'avons pas pu l'expliquer correctement. –
ci-dessous réponse a l'explication détaillée http://stackoverflow.com/questions/17149132/what-exactly-happens-when-i-set-loaduserprofile-of-iis-pool –