Да, есть способ сделать это, расширив схему конфигурации IIS.
Создайте файл с именем RegistriesSchema.xml
, скопируйте и вставьте следующий XML:
<configSchema>
<sectionSchema name="RegistriesCustomSettings">
<element name="RegistriesSettings">
<attribute name="ContextCommandTimeout"
type="int"
validationType="integerRange"
validationParameter="1,600"
allowInfinite="true"
defaultValue="30" />
<attribute name="logLinq"
type="bool"
defaultValue="True" />
<attribute name="DisplayUser"
type="bool"
defaultValue="True" />
<attribute name="BaseReportPath"
type="string"
validationType="nonEmptyString" />
<attribute name="ReportingServer"
type="string"
validationType="nonEmptyString" />
<attribute name="TopInstitution"
type="string"
validationType="nonEmptyString" />
</element>
</sectionSchema>
</configSchema>
Получите копию инструмента под названием IisSchema.exe
отсюда:
IISSCHEMA.EXE - инструмент для регистрации разделов конфигурации IIS7
Разархивируйте и убедитесь, что exe и файл схемы xml находятся в одной папке.
Из командной строки администратора (то есть откройте cmd.exe
, используя«Запуск от имени администратора»):
IISSCHEMA.EXE /install RegistriesSchema.xml
Это сделает две вещи:
4.Запустите диспетчер IIS, откройте настройки функций для своего веб-сайта и откройте редактор конфигурации:
5.Выберите раскрывающийся список Раздел:
Если все хорошо, вы должны увидеть «RegistriesCustomSettings», выберите этот пункт.
6.Теперь вы можете редактировать эти настройки, и они будут добавлены в файл web.config
вашего сайта:
Это просто демонстрация, поэтому настройки схемы могут быть не совсем верными ивероятно, потребуется некоторая подстройка.
Что делать с <sectionGroup name="RegistriesCustomSettings">
?:
Вам все равно потребуется добавить configSection/sectionGroup
xml в файл web.config
для каждого сайта или вы можете добавить его в корневой файл machine.config
для любой версии ASP.NET, которую вы используете, например:
Для .NET Framework 2.0 (что также относится к .NET3.0 и3.5):
%systemroot%\Microsoft.NET\Framework\v2.050727\CONFIG\machine.config
%systemroot%\Microsoft.NET\Framework64\v2.050727\CONFIG\machine.config
Для .NET Framework 4.0:
%systemroot%\Microsoft.NET\Framework\v4.0.30319\CONFIG\machine.config
%systemroot%\Microsoft.NET\Framework64\v4.0.30319\CONFIG\machine.config
Если вы поместили configSection/sectionGroup
вашей сборки в ваши файлы machine.config
тогда вам не нужно объявлять это на каждом сайте web.config
.Если довольно много сайтов будут использовать эту сборку, то это может помочь сэкономить время.
Обновление:
Кажется, в IIS7 есть ошибка или ограничение.5 Редактор конфигурации.Похоже, что если у вас есть собственные пользовательские объявления configSections
<sectionGroup>
или <section>
в файле web.config
вашего сайта, это нарушает работу редактора конфигурации IIS7.5.Я пытаюсь разобраться в этом:
Разрыв объявления раздела пользовательской конфигурации ASP.NET Редактор конфигурации IIS Manager
Обновление 2:
Я думаю, что документы MS по этому вопросу являются немного фальшивыми, особенно в тех случаях, когда ваш настраиваемый раздел конфигурации должен использоваться ASP.NET и редактироваться в редакторе конфигурации IIS Manager.Хитрость заключается в том, чтобы объявить схему следующим образом в файле RegistriesSchema.xml
:
<configSchema>
<sectionSchema name="RegistriesCustomSettings/RegistriesSettings">
<attribute name="ContextCommandTimeout"
type="int"
validationType="integerRange"
validationParameter="1,600"
allowInfinite="true"
defaultValue="30" />
<attribute name="logLinq"
type="bool"
defaultValue="True" />
<attribute name="DisplayUser"
type="bool"
defaultValue="True" />
<attribute name="BaseReportPath"
type="string"
validationType="nonEmptyString" />
<attribute name="ReportingServer"
type="string"
validationType="nonEmptyString" />
<attribute name="TopInstitution"
type="string"
validationType="nonEmptyString" />
</sectionSchema>
</configSchema>
Кроме того, и, что важно, удалите ссылку на раздел из applicationHost.config
:
<section name="RegistriesCustomSettings"
overrideModeDefault="Allow"
allowDefinition="Everywhere" />
Это не обязательно.
Кроме того, вам на самом деле не нужно использовать инструмент iisschema.exe
, просто возьмите копию NotePad2 (это 64-битный редактор, вам нужно это отредактировать в inetsrv\config
)и создайте файл RegistriesSchema.xml
непосредственно в inetsrv\config\schema
.
Подробнее о расширении схемы IIS7 можно узнать здесь:
Расширение схемы IIS 7.0Доступ к пользовательским разделам с помощью MWA
Вы можете изучить существующие файлы схемы, чтобы узнать больше о том, как создать эти параметры.Их можно найти в:
%systemroot%\system32\inetsrv\config\schema
Предупреждение: приведенный выше пример был протестирован на IIS7.5 x64 RTM на Windows 7 x64 Ultimate.Вы упоминаете, что у вас есть кандидат на релиз, поэтому ваш пробег может варьироваться из-за этого.