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 applicazione. La configurazione a livello di sito e applicazione coesistono insieme alla configurazione 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 le 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 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 è contrived, deve essere sufficiente per dimostrare la potenza di estendibilità della configurazione.
Prerequisiti
Per questo articolo sono disponibili diversi prerequisiti. e comprendono:
- Installazione predefinita di IIS 7.0 o successiva. Se IIS non è installato, installarlo aprendo il Server Manager e aggiungendo il ruolo Server Web (IIS).
- Assicurarsi di avere installato .NET Framework SDK. Se non è installato l'SDK, recuperarlo da https://www.microsoft.com/downloads
- Uso di numerosi strumenti nella directory bin dell'SDK. Usare il prompt dei comandi SDK dal menu start 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
Panoramica
Per illustrare alcune delle funzionalità di estendibilità di configurazione di base, viene usato l'esempio contrived di un modulo di registrazione personalizzato. Il modulo stesso non è tutto ciò che speciale e semplicemente gestisce un evento di registrazione IIS predefinito - LogRequest - e scrive una voce di log in un file su disco; considerarla come una versione di base della registrazione IIS.
L'estendibilità della configurazione viene eseguita perché il modulo deve conoscere dove registrare le informazioni. Il modulo deve avere una sezione di configurazione personalizzata che archivia la relativa configurazione, in questo caso il percorso del file di log.
Passaggio 1 - File dello schema
Il primo passaggio nell'aggiunta di una nuova sezione di configurazione definisce 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 di seguito:
<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. In primo luogo, 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 dello schema che l'attributo è una stringa e il sistema di configurazione non lo crittograferà.
L'oggetto expanded="true" indica al sistema di configurazione di espandere automaticamente le variabili di ambiente quando usato. Se non è stato creato il file nella %windir%\system32\inetsrv\config\schema directory, spostarlo ora.
Creare quindi la directory predefinita specificata per "logfileDirectory", in quanto 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 nella 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 sempliceLogging presente in system.webServer e specificato un attributo personalizzato. Tuttavia, è possibile creare facilmente una configurazione personalizzata più complessa con raccolte, elementi e attributi. L'elenco seguente mostra alcuni esempi, ma il modo migliore per imparare consiste nell'esaminare il file di schema per la configurazione IIS. Trovalo in %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>collection
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, indicare 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 abbia registrato 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 ora, la sezione di configurazione viene visualizzata e viene visualizzato un aspetto simile al seguente:
<system.webServer>
<simpleLogging />
</system.webServer>
Passaggio 3: impostazione della configurazione
Dopo aver registrato la sezione, impostare la configurazione come qualsiasi altra configurazione usando un file web.config oppure 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 nel 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 aggiungendolo 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 cosa 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>
Nota
Se la directory specificata per "logfileDirectory" non esiste, crearla ora. Il gruppo di Windows IIS_IUSRS deve disporre delle autorizzazioni di scrittura nella 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 è stato esteso il sistema di configurazione con la sezione configurazione simpleLogging del cliente. L'estendibilità della configurazione di base viene esaminata creando il modulo e illustrando come usare la configurazione personalizzata.
Verrà creato un assembly .NET fortemente denominato che tutti i siti Web in IIS possono usare. Per questa sezione è necessario usare alcuni strumenti di .NET SDK; se non è installato, scaricarlo dal sito Web di www.microsoft.com/downloads .
I passaggi necessari includono:
Creare una directory in cui funzionare e aprirla.
Creare un file SimpleLoggingModule.cs e aggiungerlo al 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 rendere questo modulo fortemente denominato 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 ha funzionato correttamente, l'output di sn.exe dice qualcosa come "Coppia di chiavi scritta in keyFile.snk"
Compilare ora il file e creare una DLL. Eseguire questo comando al 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 questo comando al prompt dei comandi:
gacutil.exe /i SimpleLoggingModule.dllÈ ora necessario aggiungere il modulo all'elenco di moduli che IIS può usare. Prima di questo, tuttavia, è necessario ottenere il nome completo dell'assembly appena creato. Eseguire quanto segue nella riga di comando:
gacutil.exe /l SimpleLoggingModuleQuesto 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. Assicurarsi tuttavia 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 applicationHost.config - file di configurazione globale di IIS.
Il processo è stato completato. Il modulo personalizzato, che usa la configurazione personalizzata, è stata configurata. Tutto ciò che rimane è quello di testarlo. Avviare il browser e passare a http://localhost/. Saranno visualizzate le informazioni illustrate nell'immagine seguente:
Se viene visualizzato un errore, assicurarsi di avere assegnato le autorizzazioni di gruppo IIS_IUSRS per scrivere nella directory.
Aprire %systemdrive%\inetpub\logs\simpleLogs (o qualsiasi directory usata nella configurazione) e avere un file con estensione log denominato con data odierna. Aprire il file e visualizzare un aspetto simile al seguente:
Eseguire l'esperimento con 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).
Nota
Il modulo appena creato è solo a scopo dimostrativo e non deve essere usato in un ambiente di produzione. Si verifica un errore se sono presenti più richieste che tentano di scrivere una voce di log contemporaneamente.
Estendibilità della configurazione - Scenari più avanzati
Panoramica
La sezione precedente ha esaminato le nozioni di base dell'estendibilità della configurazione, semplicemente estendendo la configurazione usando lo schema. Tuttavia, è disponibile maggiore potenza durante l'estensione della configurazione.
Prima di tutto, è possibile estendere la configurazione per usare gli oggetti COM per il recupero della configurazione, consentendo di archiviare le informazioni di configurazione ovunque e tuttavia non si vuole preoccuparsi che le API di configurazione non possano leggerla.
In secondo luogo, è possibile definire i 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 supporto potente per la creazione di estensioni di configurazione personalizzate.
Questa sezione esamina innanzitutto 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 per avere 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 utili.
Nota
Non è necessario creare un componente .NET: qualsiasi componente COM valido eseguirà.
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 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 dal componente .NET, è necessario creare una dll di interoperabilità. Ciò consente al sistema di configurazione IIS di 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. L'installazione di Visual Studio o .NET SDK è un prerequisito per questo articolo. Se non è installato, scaricarlo da www.microsoft.com/downloads.
Ecco i passaggi per creare il componente .NET COM:
Aprire un prompt della riga di comando e passare alla directory creata per archiviare i file. Assicurarsi che la directory bin di .NET Framework sia nel percorso e quindi eseguire il comando seguente nella riga di comando:
tlbimp %windir%\system32\inetsrv\nativerd.dll /keyfile:keyFile.snkLo strumento tlbimp.exe avrà creato un file denominato AppHostAdminLibrary.dll: questa è 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; } } } }Nota
È 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 .NET COM : ConfigurationExtensibility.dll.
Registrare il componente COM gestito appena creato. Al prompt dei comandi eseguire il comando seguente:
%windir%\Microsoft.NET\Framework\v2.0.50727\regasm.exe /register /codebase ConfigurationExtensibility.dllQuesto registra 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 dello schema
Modificare quindi il file simpleLogging_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, 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, deve 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 verrà eseguito da questo metodo. Per questo esempio, si aggiunge 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 per l'aspetto seguente (nuovo codice 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; } } } }Nota
È 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 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, indicare allo schema il nuovo metodo. In questa fase, è consigliabile acquisire familiarità con il file simpleLogging_Schema.xml , quindi aprirlo di nuovo e modificarlo in modo che sia simile al seguente:
<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
Infine, verificare 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 il logfileCount, quindi chiama il metodo e restituisce il logfileCount. È sufficiente aggiornare il file di 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
L'articolo precedente è stata una rapida panoramica di come fornire nuovi metodi di configurazione e configurazione supportati dai componenti COM. Come probabilmente è stato trovato, estendere la configurazione usando questo metodo è molto potente.
Estendibilità della configurazione - Estensione della configurazione esistente
L'aspetto finale dell'estendibilità della configurazione è la possibilità di estendere le sezioni di configurazione esistenti, ad esempio la sezione system.webServer/sites o per estendere la sezione system.webServer/simpleLogging creata nelle due sezioni precedenti.
L'estensione di una sezione di configurazione esistente è facile da creare una nuova. È sufficiente definire lo schema come xml e posizionare il file dello 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 , la sezione di configurazione usata per definire i siti. Si estende la sezione siti aggiungendo un attributo "owner" e un attributo "ownerEmail". Gli attributi come questi sono utili quando si ospitano più siti in una singola casella e si vuole tenere traccia di chi possiede i diversi siti.
Creare prima di tutto un nuovo file di schema. Creare un file siteExtension_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 un nome "system.applicationHost/sites" : si tratta dello stesso nome della sezioneSchema> 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. Eseguire semplicemente 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>
Nota
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 compilazione successiva di IIS. Per risolvere questo problema, eseguire "iisreset" dalla riga di comando.
Ciò conclude 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.