Как добавить новое определение пользовательского раздела и его детали - PullRequest
0 голосов
/ 10 декабря 2010

Я хочу добавить новое определение раздела конфигурации в <configSections> в моем web.config файле с помощью редактора конфигурации консоли управления IIS7, сгенерировать сценарий и выполнить этот сценарий при установке для обновления производственных серверов клиента.

Мне удалось добавить определение раздела, используя следующий код:

ServerManager serverManager = new ServerManager(); 
Configuration config = 
  serverManager.GetWebConfiguration("Default Web site/upngisintegration"); 
SectionGroup rootSectionGroup = config.RootSectionGroup;

SectionDefinition logSectiondef = 
  rootSectionGroup.Sections.Add("loggingConfiguration"); 
logSectiondef.Type = 
  @"Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
  Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, 
  Culture=neutral, PublicKeyToken=null"; 

serverManager.CommitChanges();

Однако я не знаю, как добавить подробности конфигурации (см. Ниже).

Как сделатьЯ делаю это?

Определение раздела:

<section name="loggingConfiguration" 
  type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings,
  Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, 
  Culture=neutral, PublicKeyToken=null" />

Детали раздела:

<loggingConfiguration 
    name="Logging Application Block" 
    tracingEnabled="true" 
    defaultCategory="General">
    <listeners>
      <add fileName="C:\temp\xxxxx.log" ..snipped for brevity.. />
      <add timestampFormat="MM-dd-yyyy HH-mm-ss" ..snipped for brevity... />
    </listeners>
    <formatters>
      <add template="...." ..snipped for brevity.../>
    </formatters>
    <categorySources>
      <add switchValue="All" name="General">
        <listeners>
          <add name="RollingFile TraceListener" />
        </listeners>
      </add>X
      <add switchValue="All" name="Inbound Outbound Trans">
        <listeners>
          <add name="RollingFile TraceListener" />
        </listeners>
      </add>
    </categorySources>
    <specialSources>
      <allEvents switchValue="All" name="All Events" />
      <notProcessed switchValue="All" name="Unprocessed Category" />
      <errors switchValue="All" name="Logging Errors &amp; Warnings">
        <listeners>
          <add name="RollingFile TraceListener" />
        </listeners>
      </errors>
    </specialSources>
  </loggingConfiguration> 

1 Ответ

0 голосов
/ 10 декабря 2010

После нескольких дней исследований мне пришлось выполнить следующие шаги, чтобы сгенерировать необходимые сценарии.

  1. Создайте файл custom_schema.xml с определение схемы для ведения журнала Блок приложения (см. Ниже) .. это это очень утомительный процесс
  2. Скопируйте этот файл C: \ Windows \ System32 \ inetsrv \ config \ schema
  3. Добавить определение раздела в web.config (приложения web.config) вручную
  4. Откройте консоль IIS7-> Нажмите на Редактор конфигурации (Безопасность группа)
  5. Выберите выше добавленный раздел (это должен появиться в списке - loggingConfiguration)
  6. Это должно показать вам полный определение
  7. Редактировать необходимое значение (забавная вещь мы должны отредактировать все значения, даже если у вас есть по умолчанию значения, иначе вы получите только измененные значения в скрипте)
  8. Вы можете нажать на Generate Script. ссылка

См. Ниже пример custom_schema.xml

--- Регистрация сведений о схеме блока приложения (CUSTOM_schema.xml)

<configSchema> 
  <sectionSchema name="loggingConfiguration"> 
 <attribute name="name" type="string" />
 <attribute name="tracingEnabled" type="bool" defaultValue="true"/>
 <attribute name="defaultCategory" type="string" defaultValue="General"/>
    <attribute name="type" type="string" defaultValue="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>            
 <element name="listeners">
  <collection addElement="add" removeElement="remove" clearElement="clear">
            <attribute name="fileName" required="true" type="string" defaultValue="c:\temp\log.log" />
   <attribute name="header" required="true" type="string" defaultValue="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" />
   <attribute name="footer" required="true" type="string" defaultValue="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" />
   <attribute name="formatter" required="true" type="string" defaultValue="Text Formatter" />
   <attribute name="listenerDataType" required="true" type="string" defaultValue="LogicaCMG.EnterpriseLibraryExtensions.Logging.Configuration.RollingFileTraceListenerData, LogicaCMG.EnterpriseLibraryExtensions.Logging, Version=0.5.2.0, Culture=neutral, PublicKeyToken=null"  />
   <attribute name="traceOutputOptions" required="true" type="string" defaultValue="None" />
   <attribute name="type" type="string" required="true" defaultValue="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"  />
   <attribute name="name" type="string" required="true" defaultValue="RollingFile TraceListener" />  
   <attribute name="ageThreshold" type="string" required="true" defaultValue="1" />  
   <attribute name="ageUnit" type="string" required="true" defaultValue="Days" />  
   <attribute name="sizeThreshold" type="string" required="true" defaultValue="2" />  
   <attribute name="sizeUnit" type="string" required="true" defaultValue="Megabytes" />  
   <attribute name="maximumNumberOfLogs" type="string" required="true" defaultValue="20" /> 
   <attribute name="timestampFormat" type="string" required="true" defaultValue="MM-dd-yyyy HH-mm-ss" /> 
        </collection>     
 </element> 
 <element name="formatters">
  <collection addElement="add" removeElement="remove" clearElement="clear">
            <attribute name="template" required="true" type="string" defaultValue="Timestamp:{timestamp(local:F)}&#xA;Message: {message}&#xA;Category: {category}&#xA;Priority: {priority}&#xA;Severity: {severity}"  />   
   <attribute name="type" type="string"  required="true" defaultValue="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
   <attribute name="name" required="true" type="string" defaultValue="Text Formatter" />   
        </collection>     
 </element> 
 <element name="categorySources">
  <collection addElement="add" removeElement="remove" clearElement="clear">
            <attribute name="switchValue"  required="true" type="string" defaultValue="All"  />      
   <attribute name="name" required="true" type="string" defaultValue="General"/>       
   <element name="listeners">
     <collection addElement="add" removeElement="remove" clearElement="clear">      
      <attribute name="name" required="true" type="string" defaultValue="RollingFile TraceListener"/>       
     </collection>
    </element>
        </collection>        
 </element> 
 <element name="specialSources">
  <element name="allEvents">
   <attribute name="switchValue"  type="string" defaultValue="All"/>
   <attribute name="name" type="string" defaultValue="All Events"/>
  </element>
  <element name="notProcessed">
   <attribute name="switchValue"  type="string" defaultValue="All"/>
   <attribute name="name"  type="string" defaultValue="Unprocessed Category"/>
  </element>
  <element name="errors">
   <attribute name="switchValue"   type="string" defaultValue="All"/>
   <attribute name="name"  type="string" defaultValue="Logging Errors &amp; Warnings"/>
   <element name="listeners">
    <collection addElement="add" removeElement="remove" clearElement="clear">      
     <attribute name="name"  type="string" defaultValue="RollingFile TraceListener"/>       
    </collection>
   </element>        
  </element>      
 </element> 
  </sectionSchema> 
</configSchema> 
...