Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il sistema di configurazione in IIS 7.0 e versioni successive si basa su file XML distribuiti che contengono la configurazione per IIS, ASP.NET e altri componenti; La flessibilità nel sistema di configurazione consente anche di impostare la configurazione a diversi livelli, tra cui il server, il sito e il livello dell'applicazione. La configurazione a livello di sito e applicazione coesiste insieme alla configurazione di ASP.NET nei file di web.config.
Un aspetto del nuovo sistema di configurazione è la facilità con cui è possibile estendere la configurazione. È possibile, con poche semplici modifiche, integrare sezioni di configurazione personalizzate direttamente nel sistema di configurazione e modificare queste impostazioni usando le API di amministrazione esistenti. La configurazione viene estesa semplicemente definendo una nuova sezione di configurazione in un file di XML Schema che viene quindi eliminato nella directory %windir%\system32\inetsrv\config\schemadello schema IIS . Infine, la nuova sezione di configurazione deve essere registrata nel file di configurazione globale iis.
Questo articolo illustra un esempio che usa l'estendibilità della configurazione di base e alcuni degli scenari più avanzati. Anche se l'esempio usato è contrivo, deve essere sufficiente per dimostrare la potenza dell'estendibilità della configurazione.
Prerequisiti
Esistono diversi prerequisiti per questo articolo. Includono:
- Installazione predefinita di IIS 7.0 o versione successiva. Se IIS non è installato, installarlo aprendo Server Manager e aggiungendo il ruolo Server Web (IIS).
- Assicurarsi di avere installato .NET Framework SDK. Se l'SDK non è installato, ottenerlo da https://www.microsoft.com/downloads
- Uso di numerosi strumenti nella directory bin dell'SDK. Usare il prompt dei comandi dell'SDK dal menu di avvio o aggiungere la directory bin al percorso (ad esempio
%systemdrive%\Program Files\Microsoft.NET\SDK\v2.0\Bin) - Esecuzione di tutti i comandi da un prompt dei comandi con privilegi elevati. Fare clic con il pulsante destro del mouse su "Prompt dei comandi SDK" (o "Prompt dei comandi") nel menu Start e quindi scegliere "Esegui come amministratore".
Estendibilità della configurazione - Nozioni di base
Informazioni generali
Per illustrare alcune delle funzionalità di estendibilità della configurazione di base, viene utilizzato un esempio artificiale di un modulo di log personalizzato. Il modulo stesso non è particolarmente speciale e si limita a gestire un evento di registrazione integrato di IIS - LogRequest - e scrive una voce di log su un file sul disco; consideratelo come una versione di base della registrazione IIS.
L'estendibilità della configurazione entra in gioco perché il modulo deve sapere dove registrare le informazioni. Il modulo deve avere una sezione di configurazione personalizzata che archivia la configurazione, in questo caso il percorso del file di log.
Passaggio 1 - File di schema
Il primo passaggio per l'aggiunta di una nuova sezione di configurazione consiste nel definire la sezione . Definire lo schema della sezione in xml e rilasciare il file nella %windir%\system32\inetsrv\config\schema directory .
Creare un file XML denominato simpleLogging_Schema.xml e inserirlo nel file seguente:
<configSchema>
<sectionSchema name="system.webServer/simpleLogging">
<attribute name="logfileDirectory" type="string"
defaultValue="%systemdrive%\inetpub\logs\simpleLogs" expanded="true" encrypted="false" />
</sectionSchema>
</configSchema>
Lo schema precedente esegue due operazioni. Prima di tutto, definisce una nuova sezione di configurazione denominata "simpleLogging" usando l'elemento <sectionSchema> . In secondo luogo, definisce un attributo della nuova sezione di configurazione denominata "logfileDirectory".
È possibile vedere dal file di schema che l'attributo è una stringa e il sistema di configurazione non lo crittograferà.
Expanded="true" indica al sistema di configurazione di espandere automaticamente le variabili di ambiente quando usate. Se il file non è stato creato nella %windir%\system32\inetsrv\config\schema directory, spostarlo qui.
Creare quindi la directory predefinita specificata per "logfileDirectory", perché probabilmente non esiste nel computer. Eseguire il comando seguente dalla riga di comando per creare la directory:
md %systemdrive%\inetpub\logs\simpleLogs
Il gruppo di Windows IIS_IUSRS deve disporre delle autorizzazioni di scrittura per la directory in modo che il modulo SimpleLogging creato nel passaggio 4 possa scrivere file di log. Eseguire il comando seguente nella riga di comando:
icacls %systemdrive%\inetpub\logs\simpleLogs /grant BUILTIN\IIS_IUSRS:RW
Altre informazioni sullo schema
Anche se il passaggio 1 è completo in termini di esempio, è opportuno discutere i file di schema. Nello schema precedente è stata semplicemente creata una nuova sezione di configurazione simpleLogging esistente in system.webServer e è stato specificato un attributo personalizzato. Tuttavia, è possibile creare facilmente una configurazione personalizzata più complessa con raccolte, elementi e attributi. L'elenco seguente illustra alcuni esempi, ma il modo migliore per imparare è esaminare il file di schema per la configurazione di IIS. Trovarlo all'indirizzo %windir%\system32\inetsrv\config\schema\IIS\_schema.xml.
attributo
Informazioni sullo schema:
<attribute name="" [String, Required] [XML name of the attribute] type="" [bool|enum|flags|uint|int|int64|string|timeSpan, Required] [Runtime type] required="false" [bool] [Indicates if it must be set] isUniqueKey="false" [bool] [Serves as the collection key] isCombinedKey="false" [bool] [Part of a multi-attribute key] defaultValue="" [String] [Default value or comma-delimited flags] encrypted="false" [bool] [Indicates if the value persisted is encrypted] expanded="false" [bool] [Environment variables are expanded when read] allowInfinite="false" [bool] [Indicates if "Infinite" can be set] timeSpanFormat="string" [string|seconds|minutes] [hh:mm:ss or number] validationType="" [See validation below] validationParameter="" [See validation below] />Esempio:
<configSchema> <sectionSchema name="system.webServer/simpleLogging"> <attribute name="logfileDirectory" type="string" /> </sectionSchema> </configSchema>elemento
Informazioni sullo schema:
<element name="" [String, Required] [XML name of the element] isCollectionDefault="false" [bool] [Indicates if default values are held for other elements in this collection] />Esempio:
<configSchema> <sectionSchema name="system.webServer/simpleLogging"> <element name="logfile"> <attribute name="fileLocation" type="string" /> </element> </sectionSchema> </configSchema>raccolta
Informazioni sullo schema:
<collection addElement="" [String] [Name of Add directive, if supported] removeElement="" [String] [Name of Remove directive, if supported] clearElement="" [String] [Name of Clear directive, if supported] defaultElement="" [applicationDefaults|applicationPoolDefaults|siteDefaults|virtualDirectoryDefaults] mergeAppend="true" [bool] [Indicates whether or not deepest set values are appended] allowDuplicates="false" [bool] [Indicates if multiple elements may have the same key] allowUnrecognizedAttributes="false" [bool] [Indicates if non-schema attributes are ok] />Esempio:
<configSchema> <sectionSchema name="system.webServer/simpleLogging"> <collection addElement="add"> <attribute name="logfileDirectory" type="string" /> </collection> </sectionSchema> </configSchema>
Passaggio 2: Registrazione della nuova sezione
Ora che è stata definita una nuova sezione, comunicare al sistema di configurazione la sezione . Registrare la nuova sezione nel %windir%\system32\inetsrv\config\applicationHost.config file. Aprire il file e registrare la sezione simpleLogging come indicato di seguito:
<configSections>
...
<sectionGroup name="system.webServer">
<section name="simpleLogging"/>
...
</sectionGroup>
</configSections>
Questo passaggio è stato completato. La sezione è definita e registrata.
Per verificare che la sezione sia stata registrata correttamente, eseguire il comando seguente dalla riga di comando:
%windir%\system32\inetsrv\appcmd list config –section:system.webServer/simpleLogging
Se tutto è andato bene fino a questo momento, la sezione di configurazione viene visualizzata e viene visualizzato un aspetto simile al seguente:
<system.webServer>
<simpleLogging />
</system.webServer>
Passaggio 3: Impostazione della configurazione
Ora che la sezione è stata registrata, impostare la configurazione come qualsiasi altra configurazione usando un file web.config o impostarla usando lo strumento appcmd.exe nella %windir%\system32\inetsrv\ directory. È anche possibile impostare la configurazione usando una delle API di configurazione. Un'altra opzione consiste nell'impostare la configurazione tramite la nuova interfaccia utente di amministrazione IIS creando un modulo dell'interfaccia utente e chiamando le API di configurazione per impostare la configurazione.
Per il momento, impostare la configurazione aggiungendola a un nuovo file diweb.config per il sito Web IIS predefinito (quello installato in %systemdrive%\inetpub\wwwroot\ e denominato "Sito Web predefinito" nella configurazione IIS predefinita). Creare un file denominato web.config e aggiungere quanto segue:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<simpleLogging logfileDirectory="%systemdrive%\inetpub\logs\simpleLogs" />
</system.webServer>
</configuration>
È possibile ottenere la stessa operazione dalla riga di comando usando:
%windir%\system32\inetsrv\appcmd set config "Default Web Site" –section:system.webServer/simpleLogging
/logfileDirectory:""%"systemdrive"%"\inetpub\logs\simpleLogs"
Eseguire il comando seguente per elencare la configurazione per il "Sito Web predefinito":
%windir%\system32\inetsrv\appcmd list config "Default Web Site" –section:system.webServer/simpleLogging
L'output è simile al seguente:
<system.webServer>
<simpleLogging logfileDirectory="%systemdrive%\inetpub\logs\simpleLogs" />
</system.webServer>
Annotazioni
Se la directory specificata per "logfileDirectory" non esiste, crearla ora. Il gruppo di Windows IIS_IUSRS deve disporre delle autorizzazioni di scrittura per la directory in modo che il modulo SimpleLogging creato nel passaggio successivo possa scrivere file di log. Il passaggio 1 precedente ha mostrato il comando della riga di comando usato per impostare le autorizzazioni corrette nella directory predefinita. Usare un comando simile se è stata creata una directory diversa.
Passaggio 4: modulo SimpleLogging
In questa fase, abbiamo esteso il sistema di configurazione con la sezione di configurazione simpleLogging del nostro cliente. Viene esaminata l'estendibilità della configurazione di base creando il modulo e illustrando come usare la configurazione personalizzata.
Verrà creato un assembly .NET con nome sicuro che tutti i siti Web in IIS possono usare. Per questa sezione è necessario usare alcuni strumenti di .NET SDK. se non è installato, scaricarlo dal
I passaggi necessari includono:
Creare una directory in cui lavorare e aprirla.
Creare un file SimpleLoggingModule.cs e aggiungervi il codice seguente usando un editor di testo:
using System; using System.Web; using System.Web.Hosting; using System.IO; using Microsoft.Web.Administration; namespace ConfigurationExtensibility { public class SimpleLoggingModule : IHttpModule { private string GetlogfileDirectory(HttpContext context) { ConfigurationSection section = WebConfigurationManager.GetSection( context, "system.webServer/simpleLogging"); return (string)section["logfileDirectory"]; } public void Init(HttpApplication context) { context.LogRequest += new EventHandler(LogRequest_EventHandler); } private void LogRequest_EventHandler(object sender, EventArgs e) { HttpApplication application = (HttpApplication)sender; LogRequest(application.Context); } private void LogRequest(HttpContext context) { string logfileDirectory = GetlogfileDirectory(context); if (Directory.Exists(logfileDirectory) == false) { Directory.CreateDirectory(logfileDirectory); } string logfile = Path.Combine(logfileDirectory, DateTime.Now.ToString("yyyyMMdd") + ".log"); string ogline = string.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}", DateTime.Now, context.Request.HttpMethod, context.Request.UserHostAddress, context.Request.Url.ToString(), context.Request.ServerVariables["LOGON_USER"], context.Request.UserAgent, context.Response.StatusCode, HostingEnvironment.SiteName); File.AppendAllText(logfile, ogline + Environment.NewLine); } public void Dispose() { } } }È necessario impostare questo modulo con nome sicuro per consentire a IIS di usarlo come modulo globale per tutti i siti. Creare prima di tutto un file di chiave con nome sicuro. Aprire un prompt dei comandi e modificare la directory in quella contenente il file SimpleLoggingModule.cs . Eseguire quindi il comando seguente (assicurarsi che la directory bin di .NET Framework SDK sia nel percorso):
sn.exe /k keyFile.snkSe funziona correttamente, l'output di sn.exe indica un messaggio simile a "Coppia di chiavi scritta in keyFile.snk"
Compilare ora il file e creare una DLL. Eseguire il comando seguente dal prompt dei comandi:
%windir%\Microsoft.NET\Framework\v2.0.50727\csc.exe /t:library SimpleLoggingModule.cs /r:System.Web.dll /r:%windir%\system32\inetsrv\Microsoft.Web.Administration.dll /keyfile:keyFile.snkPosizionare quindi l'assembly compilato (SimpleLoggingModule.dll) nella Global Assembly Cache. Eseguire il comando seguente dal prompt dei comandi:
gacutil.exe /i SimpleLoggingModule.dllÈ ora necessario aggiungere il modulo all'elenco dei moduli che IIS può usare. Prima di ciò, tuttavia, dobbiamo ottenere il nome completo dell'assemblaggio appena creato. Eseguire quanto segue nella riga di comando:
gacutil.exe /l SimpleLoggingModuleL'output è simile al seguente:
SimpleLoggingModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=652a8d02f48e4288, processorArchitecture=MSILAggiungere il modulo all'elenco di moduli che IIS può usare. Eseguire il comando seguente. Tuttavia, assicurarsi di sostituire le variabili con l'output dell'ultimo comando.
%windir%\system32\inetsrv\appcmd add module /name:"SimpleLoggingModule" /type:"ConfigurationExtensibility.SimpleLoggingModule, SimpleLoggingModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=652a8d02f48e4288"In questo modo viene aggiunta la voce di configurazione necessaria al file di configurazione globale di applicationHost.config - IIS.
Il processo è completo. Il modulo personalizzato, che usa la configurazione personalizzata, è stato configurato. Tutto ciò che rimane è quello di testarlo. Avviare il browser e passare a http://localhost/. Viene visualizzato quanto segue:
Se viene visualizzato un errore, assicurati di avere concesso al gruppo IIS_IUSRS le autorizzazioni per scrivere nella directory.
Aprire %systemdrive%\inetpub\logs\simpleLogs (o qualsiasi directory usata nella configurazione) e avere un file .log denominato con la data odierna. Aprire il file e visualizzare un risultato simile al seguente:
Provare a usare la configurazione per assicurarsi che funzioni. Provare a rimuovere la sezione simpleLogging dal file web.config e verificare se i log passano al percorso predefinito (assicurarsi che l'utente ASPNET disponga delle autorizzazioni corrette).
Annotazioni
Il modulo appena creato è solo a scopo dimostrativo e non deve essere usato in un ambiente di produzione. Il tentativo fallirà se ci sono più richieste che cercano di scrivere una voce di log contemporaneamente.
Estendibilità della configurazione - Scenari più avanzati
Informazioni generali
La sezione precedente ha esaminato le nozioni di base dell'estendibilità della configurazione, semplicemente estendendo la configurazione usando lo schema. Tuttavia, durante l'estensione della configurazione è disponibile una maggiore potenza.
In primo luogo, è possibile estendere la configurazione per usare gli oggetti COM per il recupero della configurazione, consentendo di archiviare le informazioni di configurazione ovunque e senza preoccuparsi che le API di configurazione non possano leggerla.
In secondo luogo, è possibile definire metodi per modificare e operare sulla configurazione. Questi metodi possono quindi essere chiamati usando le API di configurazione esistenti. Insieme queste due funzionalità offrono un potente supporto per la creazione di estensioni di configurazione personalizzate.
Questa sezione esamina prima di tutto la modifica della configurazione personalizzata simpleLogging dalla prima parte di questo articolo per recuperare i valori di configurazione usando un componente COM. Viene quindi esaminato l'aggiunta di un metodo di configurazione supportato da un componente COM che esegue azioni.
Estensione della configurazione - Attributo supportato da COM
Questa sezione estende lo schema in modo che abbia un attributo denominato "logfileCount". Questo attributo di configurazione è supportato da un assembly .NET (una DLL gestita , programmata in C#), che conta il numero di file di log nella directory di log; ancora una volta, si tratta di uno scenario contrived, ma uno che alcuni potrebbero trovare utile.
Annotazioni
Non è necessario creare un componente .NET. Qualsiasi componente COM valido eseguirà questa operazione.
Passaggio 1- Creazione e registrazione del componente COM .NET
Prima di tutto, per creare il componente COM .NET. Creare una directory per archiviare i file che verranno creati e il componente che verrà compilato e aperto.
Il componente creato deve implementare alcune interfacce esposte tramite COM dal sistema di configurazione IIS. Per usare l'interfaccia COM del componente .NET, è necessario creare una DLL di interoperabilità. In questo modo, il sistema di configurazione IIS può comunicare con il componente quando deve ottenere un valore per l'attributo logfileCount. Per creare la dll di interoperabilità, usare uno strumento di .NET Framework SDK denominato tlbimp.exe. Avere installato Visual Studio o .NET SDK è un prerequisito per questo articolo. Se non è installato, scaricarlo da
Ecco i passaggi per creare il componente COM .NET:
Aprire un prompt della riga di comando e passare alla directory creata per archiviare i file. Assicurarsi che la directory bin del .NET Framework sia inclusa nella variabile di ambiente PATH e quindi eseguire il seguente comando nella riga di comando:
tlbimp %windir%\system32\inetsrv\nativerd.dll /keyfile:keyFile.snkLo strumento di tlbimp.exe creerà un file denominato AppHostAdminLibrary.dll, ovvero la DLL di interoperabilità necessaria.
Creare un file ConfigurationExtensibility.cs nella directory creata in precedenza e copiare il codice C# seguente nel file usando un editor di testo:
using System; using System.IO; using System.Runtime.InteropServices; using AppHostAdminLibrary; namespace ConfigurationExtensibility { [ComVisible(true)] public class SimpleLoggingExtension : IAppHostPropertyExtension { public void ProvideGetProperty(IAppHostElement pElement, IAppHostProperty pProperty) { switch(pProperty.Name) { case "logfileCount": string logDirectory = (string) pElement.Properties["logfileDirectory"].Value; if(Directory.Exists(logDirectory)) pProperty.Value = Directory.GetFiles(logDirectory, "????????.log").Length; else pProperty.Value = 0; break; } } } }Annotazioni
È disponibile una classe che implementa l'interfaccia IAppHostPropertyExtension . Il codice stesso legge solo l'attributo logfileDirectory per ottenere la directory logfile e quindi conta tutti i file che corrispondono al modello di nome file per i file di log creati da SimpleLoggingModule.
Compilare il componente eseguendo il comando seguente dalla riga di comando:
%windir%\Microsoft.NET\Framework\v2.0.50727\csc.exe /t:library /r:AppHostAdminLibrary.dll ConfigurationExtensibility.cs /keyfile:keyFile.snkÈ ora disponibile il componente COM .NET, ConfigurationExtensibility.dll.
Registrare il componente COM gestito appena creato. Eseguire il comando seguente al prompt dei comandi:
%windir%\Microsoft.NET\Framework\v2.0.50727\regasm.exe /register /codebase ConfigurationExtensibility.dllIn questo modo viene registrato il componente COM nel Registro di sistema. È stato creato e registrato un componente COM .NET che il sistema di configurazione può usare.
Passaggio 2 - Aggiornamento del file di schema
Modificare quindi il filesimpleLogging_Schema.xml creato in precedenza. Aprire il file e modificarlo in modo che sia simile al seguente (il nuovo attributo è in grassetto):
<configSchema>
<sectionSchema name="system.webServer/simpleLogging">
<attribute name="logfileDirectory" type="string"
defaultValue="%systemdrive%\inetpub\logs\simpleLogs\" expanded="true" encrypted="false" />
<attribute name="logfileCount" type="int" extension="ConfigurationExtensibility.SimpleLoggingExtension" />
</sectionSchema>
</configSchema>
Passaggio 3 - Test
Tutto dovrebbe funzionare correttamente ora, tutto ciò che rimane è il test. Per testare l'estensione, usare uno script semplice. Creare un file SimpleLoggingTest.vbs e immettere il testo seguente:
Dim adminManager, section
Set adminManager = WScript.Createobject("Microsoft.ApplicationHost.AdminManager")
Set section = adminManager.GetAdminSection("system.webServer/simpleLogging",
"MACHINE/WEBROOT/APPHOST/Default Web Site")
WScript.Echo(section.Properties.Item("logfileCount").Value)
In questa fase dovrebbe essere presente un singolo file di log dal test di SimpleLoggingModule in precedenza. Eseguire lo script dalla riga di comando. Viene visualizzato un output pari a 1.
Estensione della configurazione - Metodo supportato da COM
Infine, questo articolo esamina l'estensione della configurazione con un metodo . I metodi di configurazione sono operazioni che il sistema di configurazione può chiamare per eseguire operazioni quali la modifica di una configurazione o l'eliminazione di file di log, ovvero ciò che questo metodo eseguirà. Per questo esempio viene aggiunto un metodo per eliminare tutti i file di log creati da SimpleLoggingModule.
Passaggio 1- Codice
Aggiungere prima di tutto il codice necessario per il metodo . Aprire il file ConfigurationExtensibility.cs creato in precedenza e aggiornarlo in modo che sia simile al seguente (nuovo codice in grassetto):
using System; using System.IO; using System.Runtime.InteropServices; using AppHostAdminLibrary; namespace ConfigurationExtensibility { [ComVisible(true)] public class SimpleLoggingExtension : IAppHostPropertyExtension, IAppHostMethodExtension { public void ProvideGetProperty(IappHostElement pElement, IappHostProperty pProperty) { switch(pProperty.Name) { case "logfileCount": string logDirectory = (string) pElement.Properties["logfileDirectory"].Value; if(Directory.Exists(logDirectory)) pProperty.Value = Directory.GetFiles(logDirectory, "????????.log").Length; else pProperty.Value = 0; break; } } public void ProvideMethod(IappHostMethod pMethod, IappHostMethodInstance pMethodInstance, IappHostElement pElement) { switch(pMethod.Name) { case "deleteLogs": string logDirectory = (string) pElement.Properties["logfileDirectory"].Value; if(Directory.Exists(logDirectory)) { foreach(string logFile in Directory.GetFiles(logDirectory, "????????.log")) { File.Delete(logFile); } } break; } } } }Annotazioni
È stata implementata l'interfaccia IAppHostMethodExtension . Questa interfaccia ha un singolo metodo denominato ProvideMethod che fornisce logicamente il metodo . Quando un utente chiama il metodo (vedere passaggio 3 per informazioni su come eseguire questa operazione), il sistema di configurazione chiama ProvideMethod e passa i parametri, uno dei quali ha il nome del metodo chiamato; nel codice precedente viene gestito solo un metodo denominato "deleteLogs".
Compilare di nuovo il progetto usando:
%windir%\Microsoft.NET\Framework\v2.0.50727\csc.exe /t:library /r:AppHostAdminLibrary.dll ConfigurationExtensibility.cs /keyfile:keyFile.snk
Passaggio 2- Aggiornamento dello schema
Successivamente, comunica allo schema il nostro nuovo metodo. In questa fase, si dovrebbe avere familiarità con il file simpleLogging_Schema.xml, quindi aprirlo di nuovo e modificarlo in modo che esso assomigli a quanto segue.
<configSchema>
<sectionSchema name="system.webServer/simpleLogging">
<attribute name="logfileDirectory" type="string"
defaultValue="c:\inetpub\logs\simpleLogs\" expanded="true" encrypted="false" />
<attribute name="logfileCount" type="int" extension="ConfigurationExtensibility.SimpleLoggingExtension" />
<method name="deleteLogs" extension="ConfigurationExtensibility.SimpleLoggingExtension" />
</sectionSchema>
</configSchema>
La modifica ha definito un nuovo metodo denominato "deleteLogs" e indica alla configurazione dove cercare il metodo .
Passaggio 3 - Test
Verificare infine se il metodo funziona. Un modo rapido e semplice per eseguire questa operazione consiste nel scrivere uno script VB semplice. Di seguito è riportato uno script di esempio che restituisce logfileCount, quindi chiama il metodo e restituisce il logfileCount. È sufficiente aggiornare il file SimpleLoggingTest.vbs creato in precedenza e immettere quanto segue:
Dim adminManager, section
Set adminManager = WScript.Createobject("Microsoft.ApplicationHost.AdminManager")
Set section = adminManager.GetAdminSection("system.webServer/simpleLogging", "MACHINE/WEBROOT/APPHOST/Default Web Site")
WScript.Echo(section.Properties.Item("logfileCount").Value)
section.Methods.Item("deleteLogs").CreateInstance().Execute()
WScript.Echo(section.Properties.Item("logfileCount").Value)
Eseguire lo script da una riga di comando e ottenere un output di:
1
0
La precedente è stata una rapida panoramica di come fornire nuovi metodi di configurazione e configurazione supportati dai componenti COM. Come probabilmente si è scoperto, l'estensione della configurazione con questo metodo è molto potente.
Estendibilità della configurazione - Estensione della configurazione esistente
L'aspetto finale dell'estendibilità della configurazione è la possibilità di estendere sezioni di configurazione esistenti, ad esempio la sezione system.webServer/sites , o di estendere la sezione system.webServer/simpleLogging creata nelle due sezioni precedenti.
L'estensione di una sezione di configurazione esistente è semplice come crearne una nuova. È sufficiente definire lo schema come xml e inserire il file di schema nella %windir%\system32\inetsrv\config\schema\ directory . Questo dovrebbe sembrare familiare, come abbiamo fatto in precedenza più di una volta.
Estensione della configurazione dei "siti"
Per illustrare meglio come estendere una sezione di configurazione esistente, si estende la sezione system.applicationHost/sites , ovvero la sezione di configurazione usata per definire i siti. La sezione sites viene estesa aggiungendo un attributo "owner" e un attributo "ownerEmail". Gli attributi come questi sono utili quando si ospitano più siti in un'unica casella e si vuole tenere traccia di chi possiede i diversi siti.
Creare prima di tutto un nuovo file di schema. Creare un filesiteExtension_schema.xml nella %windir%\system32\inetsrv\config\schema\ directory e immettere il testo seguente:
<configSchema>
<sectionSchema name="system.applicationHost/sites">
<collection addElement="site">
<attribute name="owner" type="string" />
<attribute name="ownerEmail" type="string" />
</collection>
</sectionSchema>
</configSchema>
Quando si estende lo schema di una sezione esistente, è sufficiente creare un <sectionSchema> elemento e impostare l'attributo name come una sezione esistente. Nel file di schema precedente è stata definita una <sezioneSchema> con il nome "system.applicationHost/sites", che corrisponde al nome sectionSchema nel file IIS_Schema.xml nella directory Schema.
Testare le modifiche aggiungendo valori per gli attributi "owner" e "ownerEmail" e quindi controllare il file di configurazione per visualizzare le modifiche. È sufficiente eseguire il comando seguente dalla riga di comando:
%windir%\system32\inetsrv\appcmd set site "Default Web Site" /owner:"John Contoso" /ownerEmail:"john@contoso.com"
Per verificare se la configurazione è stata applicata, eseguire il comando seguente e controllare l'output:
%windir%\system32\inetsrv\appcmd list site "Default Web Site" /config
L'output dovrebbe essere simile al seguente:
<system.applicationHost>
<sites>
...
<site name="Default Web Site" id="1" siteOwner="John Contoso" siteOwnerEmail="john@contoso.com">
...
...
</site>
</sites>
</system.applicationHost>
Annotazioni
Se si passa a http://localhost/, è possibile che venga visualizzato un messaggio di errore server 500.19. Si tratta di un problema noto e verrà risolto in una build successiva di IIS. Per risolvere questo problema, eseguire "iisreset" dalla riga di comando.
Conclude quindi l'analisi dell'estendibilità della configurazione. Si spera che sia possibile usare l'estendibilità della configurazione in modo interessante dopo aver letto gli esempi precedenti.