Как исправить ошибку "compilerVersion" IIS?

Я получаю это исключение:

System.Configuration.ConfigurationErrorsException: значение для Атрибут compilerVersion в опциях поставщика должен быть "v4.0" или позже, если вы компилируете версию 4.0 или новее .NET. Framework.

Что делать, чтобы разрешить это?

Ответ 1

У меня была аналогичная проблема, и мне пришлось указать ASP.NET в конфигурации, чтобы использовать компилятор 3.5 следующим образом, изменив Web.config.

Я скопировал и вставил следующее из своего кода. Вы должны изменить value = "v3.5" на value = "v4.0" . Строки типа компилятора также могут меняться.

<configuration>

  <!--  ... other configuraiton stuff ... -->

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
        <providerOption name="CompilerVersion" value="v3.5"/>
        <providerOption name="WarnAsError" value="false"/>
      </compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
        <providerOption name="CompilerVersion" value="v3.5"/>
        <providerOption name="OptionInfer" value="true"/>
        <providerOption name="WarnAsError" value="false"/>
      </compiler>
    </compilers>
  </system.codedom>

</configuration>

В моем случае вместо 3.5 использовался компилятор 2.0. Я работал в проекте IIS 7, ASP.NET Website.

Вы можете получить дополнительную информацию:

Ответ 2

это должно помочь

<configuration>
<!--  -->
<system.codedom>
 <compilers>
  <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
    type="Microsoft.CSharp.CSharpCodeProvider,System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
   <providerOption name="CompilerVersion" value="v4.0"/>
   <providerOption name="WarnAsError" value="false"/>
  </compiler>
 </compilers>
</system.codedom>
<!--  -->
</configuration>

Ответ 3

В моем случае я пытался запустить дочернее приложение с использованием 4.0, но родительское приложение должно было использовать 2.0. Обертка информации компиляторов в родительском web.config с тегом <location path="." inheritInChildApplications="false"> исправлена.

Parent Web.config:

<location path="." inheritInChildApplications="false">
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
        <providerOption name="CompilerVersion" value="v3.5" />
        <providerOption name="WarnAsError" value="false" />
      </compiler>
    </compilers>
  </system.codedom>

Ответ 4

Удалить этот раздел из web.config

<compilation debug="true" strict="true" explicit="true"  targetFramework="4.0" />

Ответ 5

В моем случае это был дочерний сайт под сайтом по умолчанию, и хотя настройки веб-сайта по умолчанию были установлены в ASP.NET 4.0, файл web.config был установлен для 2.0 и 3.5. Изменение файла web.config для использования 4.0 исправил его. Используйте это для справки: ASP.NET 4 Нарушение изменений

Ответ 6

Мы случайно скопировали Web.config в C:\inetpub\wwwroot. Этот случайно скопированный в Web.config экземпляр несовместил конфигурацию и вызвал ошибку compilerVersion для нас. Удаление Web.config решило проблему для нас.

Ответ 7

В моем случае я использую старый веб-сайт (V 2.0), необходимо добавить новое приложение, разработанное в MVC4.0. С той же ошибкой, с которой я столкнулся, и после многих перестановок и комбинаций данного решения я поместил весь web.comfig родительского приложения в следующий тег

<location path="." inheritInChildApplications="false">
...... web config tags here........
</location>