J'obtiens cette erreur lorsque j'utilise FileHelpers.dll, mais mon IIS est défini sur Niveau de confiance total, il ne devrait donc pas en être ainsi.
C'est la trace complète de la pile:
[PolicyException: Required permissions cannot be acquired.]
System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission) +10238142
System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission) +97
[FileLoadException: Could not load file or Assembly 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]
System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) +0
System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +416
System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +166
System.Reflection.Assembly.Load(String assemblyString) +35
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +190
[ConfigurationErrorsException: Could not load file or Assembly 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11207304
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +388
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +232
System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +48
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +210
System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath configPath, Boolean supportLocalization, String outputAssemblyName) +76
System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp) +283
System.Web.Compilation.BuildManager.CompileGlobalAsax() +50
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +676
[HttpException (0x80004005): Could not load file or Assembly 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +76
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +1012
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) +1025
[HttpException (0x80004005): Could not load file or Assembly 'FileHelpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=3e0c08d59cc3d657' or one of its dependencies. Failed to grant minimum permission requests. (Exception from HRESULT: 0x80131417)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11301302
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +88
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4338644
J'ai eu un problème similaire lorsque j'ai reconstruit ma machine de développement avec une installation propre de Windows 7. Après avoir chassé, j'ai découvert une solution qui fonctionnait pour moi.
Dans vos paramètres avancés du pool d'applications IIS, sous "Modèle de processus", définissez Charger le profil utilisateur sur true.
Il y a d'autres choses à vérifier comme votre niveau de confiance, mais aucune ne s'applique à moi (c'était déjà une confiance totale sur ma machine de développement). La définition du pool d'applications pour charger le profil utilisateur l'a corrigé.
J'ai vu cette erreur dans une autre instance où, par exemple, IIS exécute une application ou un chemin virtuel via un chemin UNC (c'est-à-dire \\svr\share\folder
). Même si Load User Profile=true
J'ai toujours l'erreur PolicyException. Elle a été résolue en exécutant Code Access Security Policy Tool (Caspol.exe) pour ajouter une confiance totale au chemin UNC. Puisque nous avions tous les deux 64 bit
et 32 bit
de .Net 2.x
et .Net 4.x
, je l'ai exécuté dans les quatre environnements comme suit:
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*" FullTrust -exclusive on
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*" FullTrust -exclusive on
%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*" FullTrust -exclusive on
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\caspol.exe -pp off -m -ag 1 -url "file:////\\svr\share\folder\*" FullTrust -exclusive on
Quelques mises en garde:
.Net 4.x
, Assurez-vous d'activer les commandes NetFx40_LegacySecurityPolicy à true
ou les commandes caspol.exe
Ne fonctionneront pas comme prévu.Ne pas ne pas ajouter des entrées en double avec caspol.exe
Pour un environnement donné. Exécutez les commandes ci-dessous pour afficher vos entrées:
%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\caspol.exe -a -lg
%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\caspol.exe -a -lg
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\caspol.exe -a -lg
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\caspol.exe -a -lg
Nous avons eu un problème similaire avec Windows 2008 R2 où notre application fonctionnerait correctement en mode 64 bits mais lorsqu'elle serait basculée en mode 32 bits cesserait de fonctionner et lancer l'erreur d'autorisation, se révèle, dans IIS7 sous Paramètres avancés >> Modèle de processus >> le Le paramètre "Identité" a été basculé sur "Identité du pool d'applications" par défaut et peut avoir besoin d'être changé en "Service réseau" pour fonctionner en mode 32 bits.
C'est ce que nous avons fait et maintenant nous marchons doucement. Cette petite info pourrait être la raison pour laquelle tout le monde pointe vers les autorisations de dossier, car techniquement c'est un problème d'autorisation de dossier. Mais le changement était dans IIS et non les paramètres de sécurité sur les dossiers eux-mêmes.
Il semble que ce soit un assemblage générique qui ne chargera pas d'erreur. J'apprécie tous les autres messages car ils sont devenus une liste de sources possibles d'erreur.
J'en ai trouvé un de plus. J'avais essayé tout ce qui précède sans succès. J'ai finalement réalisé que je publiais l'application Web de Visual Studios Express 2008 avec une configuration de construction de "Debug". Après avoir changé la configuration de construction en "version", l'application Web a fonctionné.
Particularités: Visual Studios Express 2008 déplaçant des fichiers vers IIS7.5 sur le serveur Win 2008 R2.
le problème lui appartient est d'utiliser ddl pas de confiance pour SharePoint pour résoudre le problème:
J'ai eu des problèmes similaires, j'ai résolu le problème avec les étapes suivantes:
load user profile
à true