web-dev-qa-db-fra.com

IIS7 n'a pas réussi à accorder des demandes d'autorisation minimales

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
32
Omu

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é.

83
Pat James

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:

  • Pour .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

22
Al Dass

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.

2
Samuel Anderson

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.

2
watch_amajigger

le problème lui appartient est d'utiliser ddl pas de confiance pour SharePoint pour résoudre le problème:

  1. ouvrir IIS
  2. cliquez sur .net niveaux les plus vrais
  3. choisi complet (interne)
1
AMustafa

J'ai eu des problèmes similaires, j'ai résolu le problème avec les étapes suivantes:

  1. Accédez à IIS.
  2. Faites un clic droit sur le dossier du site Web et voyez son pool d'applications.
  3. Faites un clic droit sur le pool d'applications et accédez aux paramètres avancés.
  4. Dans la section du modèle de processus, définissez load user profile à true
1
Frankenstine Joe