Web.config, вызывающий ошибку "заблокирован групповой политикой"

Мириада разных настроек web.config всегда была для меня загадкой. Я рад, что Microsoft очистила часть контента, помещенного туда по умолчанию, но все еще вызывает проблемы.

В частности, Visual Studio 2015 размещает следующий раздел в сгенерированном web.config стандартного приложения ASP.NET MVC.

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

Когда я загружаю это приложение на свою общую учетную запись хостинга Plesk на GoDaddy, я получаю следующую ошибку.

Эта программа блокируется групповой политикой. Для получения дополнительной информации обратитесь к системному администратору.

Поддержка GoDaddy полностью не желает и не может оказать какую-либо помощь. Тем не менее, я обнаружил, что если я прокомментирую раздел выше, ошибка исчезнет.

Кто-нибудь знает цель этого блока или почему Microsoft помещает его там? Мое приложение, похоже, работает нормально без него. (Обратите внимание, что мое приложение использует С#, а не VB.)

Ответы

Ответ 1

Поскольку ASP.NET 2 позволяет загружать ваш сайт на ваш хостинг без его компиляции. Затем сайт будет скомпилирован по первоначальному запросу, используя настройки компилятора, как показано в файле web.config. Если вы предварительно скомпилируете свой сайт, но все еще имеете код в папке App_code, эти параметры будут использованы для компиляции этого кода.

Мне кажется, что на своих серверах отключена компиляция go-daddy, поэтому вредоносный код не может быть вставлен и скомпилирован/выполнен.

Пока вы не используете папку App_code, и вы предварительно компилируете свой сайт, вы можете удалить раздел web.config, который вы упомянули.

Для получения дополнительной информации о проверке папки App_code:

Дополнительные сведения о динамической компиляции проверки ASP.NET:

Ответ 2

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

Удалите все содержимое внутри тега system.codedom и добавьте

<trust level="Full"/>

внутри тега system.web

<system.web>
   <trust level="Full"/>
</system.web>

Ответ 3

Я понимаю, что это немного поздно, но я решил эту проблему, удалив все содержимое элемента. Кажется, что это работает как для предварительной компиляции, так и для других.