web-dev-qa-db-fra.com

Web.config provoquant l'erreur "bloqué par la stratégie de groupe"

Le miriad de différents paramètres de web.config a toujours été un mystère pour moi. Je suis heureux que Microsoft ait nettoyé une partie du contenu mis par défaut, mais cela cause toujours des problèmes.

Plus précisément, Visual Studio 2015 place la section suivante dans le fichier web.config généré d'une application ASP.NET MVC standard.

<system.codedom>
  <compilers>
    <compiler language="c#;cs;csharp" extension=".cs"
      type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
   <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
      type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
  </compilers>
</system.codedom>

Lorsque je télécharge cette application sur mon compte d'hébergement Plesk partagé GoDaddy, j'obtiens le message d'erreur suivant.

Ce programme est bloqué par la stratégie de groupe. Pour plus d'informations, contactez votre administrateur système.

L'assistance de GoDaddy est totalement réticente et incapable de fournir une assistance. Cependant, j'ai trouvé que si je commentais la section ci-dessus, l'erreur disparaîtrait.

Est-ce que quelqu'un connaît le but de ce bloc ou pourquoi Microsoft le met-il là? Mon application semble fonctionner correctement sans elle. (Notez que mon application utilise C # et pas VB.)

22
Jonathan Wood

Depuis ASP.NET 2, il est possible de télécharger votre site sur votre hébergement sans le compiler. Ensuite, le site sera compilé sur la demande initiale en utilisant les paramètres du compilateur, comme indiqué dans le fichier web.config. Si vous pré-compilez votre site mais que vous avez toujours du code dans le dossier App_code, ces paramètres seront utilisés pour compiler ce code.

Je pense que Go-Daddy a désactivé la compilation sur leurs serveurs afin qu'aucun code malveillant ne puisse être inséré et compilé/exécuté.

Tant que vous n'utilisez pas le dossier App_code et que vous pré-compilez votre site Web, vous pouvez supprimer la section web.config que vous avez mentionnée.

Pour plus d'informations sur la vérification du dossier App_code:

Pour plus d'informations sur la compilation dynamique d'ASP.NET, consultez:

12
SynerCoder
<system.codedom>
   <!--remove all the contents here-->
</system.codedom>

Supprimez tout le contenu de la balise system.codedom et ajoutez

<trust level="Full"/>

dans la balise system.web

<system.web>
   <trust level="Full"/>
</system.web>
40
Prince Prasad

Je réalise que c'est un peu tard, mais j'ai résolu ce problème en supprimant tout le contenu de l'élément. Cela semble fonctionner à la fois pré-compilé et autre. 

1
Jonathan

Sur votre serveur, modifiez les paramètres Asp.net. Il existe une option pour le niveau de confiance. Réglez-le sur "Full".