Публикация ASP.NET 3.5 Сайт оставляет Web.config пустым из-за элемента providerOptions

Я пытаюсь опубликовать сайт ASP.Net 3.5 на сервере IIS 7.5, используя WebDAV, и каждый раз, когда я делаю, файл конфигурации заканчивается пустым. Виновным в этом является провайдер выбора, который показан в приведенном ниже коде.

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

Файл FX_schema.xml в C:\Windows\System32\inetsrv\config\schema используется для проверки Web.config для сайта, и он не содержит providerOptions как часть XML-файла. Я мог бы добавить что-то, что позволит изменить этот файл, добавив что-то вроде этого:

 <collection addElement = "providerOption">
  <attribute name = "name" required = "true" isUniqueKey = "true" type = "string" />
  <attribute name = "value" required = "true" type = "string" />
 </collection>

Но у меня нет никаких прав для записи в файл схемы. Это также похоже на то, что другие должны видеть, и быстрый поиск обнаружил, что некоторые люди. Единственная опция, которую я видел, это "Просто удалите секцию кодирования", что означает, что 3.5 вещи, такие как LINQ, не будут работать, так что это не стартер.

Итак, как мне опубликовать мой веб-сайт в IIS 7.5 с неповрежденными элементами providerOption?

1 ответ

Решение

Ну, так как я не мог найти что-то конкретное, я просто пошел дальше и сделал то, что, как я думал, могло бы стать решением: я создал свой собственный файл и поместил его в файлы схемы. Я назвал его изобретательным именем 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 работает, как и ожидалось, поэтому я испытываю желание назвать это решением.

Другие вопросы по тегам