Condividi tramite


Server Runtime <ServerRuntime>

Panoramica

L'elemento <serverRuntime> configura le impostazioni seguenti correlate al runtime del server Internet Information Services (IIS) 7:

  • L'impostazione dell'attributo abilitato su true configurerà IIS 7 per gestire il contenuto nell'URL in cui è configurato l'elemento <serverRuntime> . L'impostazione dell'attributo abilitato su false configurerà IIS 7 per non servire il contenuto per tale URL.

  • L'attributo alternateHostName specifica un nome host diverso dal nome del computer nell'intestazione Del contenuto HTTP.

  • L'attributo appConcurrentRequestLimit specifica il numero massimo di richieste simultanee che possono essere accodate per un'applicazione.

  • L'attributo enableNagling abilita o disabilita il nagling, ovvero un'ottimizzazione per HTTP su TCP che aumenta l'efficienza cercando di ridurre al minimo il numero di pacchetti necessari prima dell'invio dei dati. Funziona aspettando l'invio di un pacchetto fino al completamento dell'area dati, fino alla scadenza di un periodo di timeout da 200 millisecondi o fino a quando il mittente indica che viene completato l'invio di dati. IIS versione 5.1 e versioni precedenti usano nagling per tutti i dati inviati al client.

    Nota

    Nagling ha un possibile svantaggio; se un'estensione non riempie il pacchetto, c'è ancora un ritardo di 200 millisecondi prima dell'invio della risposta. Questo comportamento viene visto più spesso quando si usano estensioni ISAPI che supportano un'intestazione HTTP keep-alive nella risposta al client. In questo caso, IIS non chiude la connessione dopo la risposta, quindi il pacchetto finale termina in attesa di 200 millisecondi.

  • IIS 7 controlla lo stato di due attributi per determinare il livello di traffico per un URL specifico. L'attributo frequentHitThreshold configura il numero di richieste e l'attributo frequentHitTimePeriod configura la quantità di tempo consentita prima che tale URL venga valutato frequentemente. Queste informazioni vengono usate durante la scrittura di moduli HTTP che usano queste informazioni per l'elaborazione. Per altre informazioni, vedere l'articolo Metodo IHttpUrlInfo::IsFrequentlyHit .

  • Gli attributi maxRequestEntityAllowed e uploadReadAheadSize configurano rispettivamente i limiti per il numero massimo di byte consentiti nel corpo dell'entità di una richiesta e il numero di byte che un server Web leggerà in un buffer e passerà a un'estensione ISAPI. Deve essere preso in considerazione che l'aumento di questi valori consente all'utente finale di caricare più contenuto che può avere un effetto sulle risorse di memoria di runtime IIS. È consigliabile mantenere questi valori in modo coerente con le esigenze dell'applicazione e solo in circostanze estreme usare il valore massimo.

Novità in IIS 7.5

IIS 7.5 ha aggiunto l'attributo authenticationdUserOverride all'elemento<serverRuntime>, che configura se il runtime del server IIS 7 fornirà l'identità dell'utente autenticata o l'identità del processo di lavoro in IHttpUser::GetPrimaryToken e IHttpUser::GetImpersonationToken. Questo attributo può essere impostato su UseAuthenticatedUser o UseWorkerProcessUser e questi valori specificano rispettivamente se il runtime del server IIS 7 fornirà l'identità dell'utente autenticata o l'identità del processo di lavoro per qualsiasi modulo che usa la rappresentazione.

Compatibilità

Versione Note
IIS 10.0 L'elemento <serverRuntime> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <serverRuntime> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <serverRuntime> non è stato modificato in IIS 8.0.
IIS 7,5 L'attributo authenticationdUserOverride è stato aggiunto in IIS 7.5.
IIS 7.0 L'elemento <serverRuntime> è stato introdotto in IIS 7.0.
IIS 6.0 L'elemento <serverRuntime> sostituisce le proprietà metabase di IIS 6.0 seguenti:
  • SetHostName
  • MaxRequestEntityAllowed
  • UploadReadAheadSize

Installazione

L'elemento <serverRuntime> è incluso nell'installazione predefinita di IIS 7.

Procedure

Non esiste un'interfaccia utente che consente di configurare l'elemento <serverRuntime> per IIS 7. Per esempi di come configurare l'elemento a livello di codice, vedere la <serverRuntime> sezione Esempi di codice di questo documento.

Configurazione

Attributi

Attributo Descrizione
alternateHostName Attributo stringa facoltativo.

Specifica il nome host da usare per il reindirizzamento.
appConcurrentRequestLimit Attributo uint facoltativo.

Specifica il numero massimo di richieste che possono essere accodate per un'applicazione.

Il valore predefinito è 5000.
authenticatedUserOverride Attributo enumerazione facoltativo.

Specifica se il runtime del server IIS 7 fornirà l'identità dell'utente autenticata o l'identità del processo di lavoro per i moduli che usano la rappresentazione.

Nota: Questo attributo è stato aggiunto in IIS 7.5.
Valore Descrizione
UseAuthenticatedUser Specifica che IIS fornirà il token dell'utente autenticato; le applicazioni eseguite in questo contesto saranno limitate a qualsiasi restrizione di accesso per l'identità dell'utente autenticata.

Il valore numerico è 1.
UseWorkerProcessUser Specifica che IIS fornirà il token per l'identità del processo di lavoro anziché usare l'identità dell'utente autenticato; le applicazioni eseguite in questo contesto saranno limitate a qualsiasi restrizione di accesso per l'identità del processo di lavoro.

Il valore numerico è 2.
Il valore predefinito è UseAuthenticatedUser.
enabled Attributo Boolean facoltativo.

Specifica se le applicazioni nel server Web sono in grado di gestire il contenuto (true) o non sono in grado di servire il contenuto (false).

Il valore predefinito è true.
enableNagling Attributo Boolean facoltativo.

Specifica se nagling è abilitato (true) o disabilitato (false).

Il valore predefinito è false.
frequentHitThreshold Attributo uint facoltativo.

Specifica il numero di volte in cui deve essere richiesto un URL, entro l'intervallo di tempo specificato nell'attributo frequentHitTimePeriod , da considerare frequente. Il valore deve essere compreso tra 1 e 2147483647.

Il valore predefinito è 2.
frequentHitTimePeriod Attributo timeSpan facoltativo.

Specifica l'intervallo di tempo in cui deve essere richiesto un URL il numero di volte specificato nell'attributo frequentHitThreshold prima di essere considerato frequente.

Il valore predefinito è 00:00:10 (10 secondi).
maxRequestEntityAllowed Attributo uint facoltativo.

Specifica il numero massimo di byte che possono essere presenti in un corpo di entità di una richiesta. Se l'intestazione Content-Length specifica un numero maggiore, IIS invia una risposta di errore HTTP 403.

Il valore predefinito è 4294967295 (illimitato).
uploadReadAheadSize Attributo uint facoltativo.

Specifica il numero di byte letti da un server Web in un buffer e passa a un'estensione o a un modulo ISAPI. Ciò si verifica una volta per ogni richiesta client. L'estensione o il modulo ISAPI riceve tutti i dati aggiuntivi direttamente dal client. Il valore deve essere compreso tra 0 e 2147483647.

Il valore predefinito è 49152.

Elementi figlio

Nessuno.

Esempio di configurazione

L'esempio di configurazione seguente imposta <serverRuntime> l'attributo enable dell'elemento su true, quindi configura il numero di richieste per un URL da considerare "frequente" impostando l'attributo frequentHitThreshold su 5 richieste e l'attributo frequentHitTimePeriod a 20 secondi.

<location path="Default Web Site">
   <system.webServer>
      <serverRuntime enabled="true"
         frequentHitThreshold="5"
         frequentHitTimePeriod="00:00:20" />
   </system.webServer>
</location>

Codice di esempio

Gli esempi di codice seguenti impostano <serverRuntime> l'attributo enable dell'elemento su true, quindi configurano il numero di richieste per un URL da considerare "frequente" impostando l'attributo frequentHitThreshold su 5 richieste e l'attributo frequentHitTimePeriod a 20 secondi.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /enabled:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitThreshold:"5" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/serverRuntime /frequentHitTimePeriod:"00:00:20" /commit:apphost

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. Questa operazione esegue il commit delle impostazioni di configurazione nella sezione percorso appropriata nel file di ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection serverRuntimeSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site");
         serverRuntimeSection["enabled"] = true;
         serverRuntimeSection["frequentHitThreshold"] = 5;
         serverRuntimeSection["frequentHitTimePeriod"] = TimeSpan.Parse("00:00:20");

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim serverRuntimeSection As ConfigurationSection = config.GetSection("system.webServer/serverRuntime", "Default Web Site")
      serverRuntimeSection("enabled") = True
      serverRuntimeSection("frequentHitThreshold") = 5
      serverRuntimeSection("frequentHitTimePeriod") = TimeSpan.Parse("00:00:20")

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site");
serverRuntimeSection.Properties.Item("enabled").Value = true;
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5;
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set serverRuntimeSection = adminManager.GetAdminSection("system.webServer/serverRuntime", "MACHINE/WEBROOT/APPHOST/Default Web Site")
serverRuntimeSection.Properties.Item("enabled").Value = True
serverRuntimeSection.Properties.Item("frequentHitThreshold").Value = 5
serverRuntimeSection.Properties.Item("frequentHitTimePeriod").Value = "00:00:20"

adminManager.CommitChanges()