Как обновить файл FX_schema.xml в IIS 7? - PullRequest
3 голосов
/ 04 ноября 2010

Мы развертываем наше приложение ASP.Net MVC на сервере Windows 2008 R2 с IIS 7.5.

После развертывания мы получаем эту ошибку в журнале событий (мы также получаем электронное письмо): «Нераспознанный элемент providerOption» в строке x в c: \ wwwroot \ web.config что:

<providerOption name="CompilerVersion" value="v3.5"> 

находится в разделе компиляторов system.codedom нашей стандартной веб-конфигурации. Я немного исследовал проблему. (Я также проверил подробности пространства имен на msdn , чтобы узнать об этом). Среди многих других решений я обнаружил в этом посте , в котором рекомендуется обновить файл FX_Schema.xml на нашем сервере. (Я думаю, что здесь проблема, пожалуйста, исправьте меня, если я ошибаюсь)

Я просмотрел файл fx_schema и, как определено в средстве просмотра событий, атрибут "providerOption" отсутствует в этой схеме! Вот копия раздела system.codedom из FX_schema.xml

<sectionSchema name="system.codedom">
    <element name="compilers">
        <collection addElement="compiler" removeElement="remove" clearElement="clear">
            <attribute name="language" type="string" isCombinedKey="true" />
            <attribute name="extension" type="string" isCombinedKey="true" />
            <attribute name="type" type="string" />
            <attribute name="warningLevel" type="int" />
            <attribute name="compilerOptions" type="string" />
        </collection>
    </element>
</sectionSchema>

Я уверен, что я не могу быть единственным человеком, который имеет эту проблему, но кто-нибудь еще сталкивался с этим раньше и нашел решение?

РЕДАКТИРОВАТЬ: Другой способ сделать это быстро (на IIS 7 в Windows 7)

В консоли управления IIS откройте свой веб-сайт MVC на домашней странице веб-сайта. Вы должны увидеть группы ASP.NET, IIS и Managment. В разделе «Управление» откройте «Редактор конфигурации». Я получаю сообщение об ошибке здесь

РЕДАКТИРОВАТЬ: Моя копия веб-конфигурации:

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

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

Ответы [ 2 ]

1 голос
/ 26 ноября 2010

Мне удалось воссоздать ошибку в IIS, просто перейдя в раздел system.codedom диспетчера конфигурации.

Я не получаю никаких ошибок при использовании .net3.5 или .net4Приложение .0, но это очень простые тестовые приложения, также только тестовые приложения .net3.5 помещают раздел system.codedom в файл web.config по умолчанию..net4.0 упростил файл web.config и удалил множество опций

Я нашел некоторую информацию здесь о возможных конфликтах конфигурации, которые могут быть полезны

Рекомендуется

Обходной путь для второго сценария - удалить или закомментировать все определения system.web.extensions разделов конфигурации и определений групп разделов конфигурации из файла Web.config уровня приложения.Эти определения обычно находятся в верхней части файла Web.config уровня приложения и могут быть определены элементом configSections и его дочерними элементами.

Для обоих сценариев рекомендуется также вручную удалить system.codedomраздел, хотя это и не требуется

Не совсем та же проблема, но похожая

0 голосов
/ 02 октября 2012

У меня была проблема, очень похожая на эту, которую я опубликовал, а затем решил сам и опубликовал решение Я придумал .Мое решение: я создал свой собственный файл и поместил его в файлы схемы.Я назвал его изобретательным именем ThreeFive.xml и поместил его в C: \ Windows \ System32 \ inetsrv \ config \ schema.Все содержимое файла выглядит следующим образом:

<configSchema>
    <sectionSchema name="system.codedom">
        <element name="compilers">
            <collection addElement="compiler" removeElement="remove" clearElement="clear">
                <attribute name="language" type="string" isCombinedKey="true" />
                <attribute name="extension" type="string" isCombinedKey="true" />
                <attribute name="type" type="string" />
                <attribute name="warningLevel" type="int" />
                <attribute name="compilerOptions" type="string" />
                <collection addElement="providerOption">
                  <attribute name="name" required="true" isUniqueKey="true" type="string" />
                  <attribute name="value" required="true" type="string" />
                </collection>
            </collection>
        </element>
    </sectionSchema>
</configSchema>

Затем я опубликовал сайт 3.5, который извлек информацию из параметра appconfig и выполнил LINQ, чтобы убедиться, что конфигурация и 3.5 действовали.Файл конфигурации не был очищен, и LINQ работает, как и ожидалось, поэтому я испытываю желание назвать это решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...