Server Runtime <serverRuntime>

Visão geral

O <serverRuntime> elemento define as seguintes configurações relacionadas ao runtime do servidor do IIS (Serviços de Informações da Internet) 7:

  • Definir o atributo habilitado como true configurará o IIS 7 para fornecer conteúdo na URL em que o <serverRuntime> elemento está configurado; definir o atributo habilitado como false configurará o IIS 7 para não fornecer conteúdo para essa URL.

  • O atributo alternateHostName especifica um nome de host diferente do nome do computador no cabeçalho http Content-location.

  • O atributo appConcurrentRequestLimit especifica o número máximo de solicitações simultâneas que podem ser enfileiradas para um aplicativo.

  • O atributo enableNagling habilita ou desabilita a navegação, que é uma otimização para HTTP sobre TCP que aumenta a eficiência ao tentar minimizar o número de pacotes necessários antes que os dados sejam enviados. Ele funciona aguardando para enviar um pacote até que sua área de dados esteja cheia, até que um período de tempo limite de 200 milissegundos expire ou até que o remetente indique que ele terminou de enviar dados. As versões 5.1 e anteriores do IIS usam a navegação para todos os dados enviados ao cliente.

    Observação

    Nagling tem uma possível desvantagem; se uma extensão não preencher o pacote, ainda haverá um atraso de 200 milissegundos antes que a resposta seja enviada. Esse comportamento é visto com mais frequência quando você usa extensões ISAPI que dão suporte a um cabeçalho keep alive HTTP na resposta ao cliente. Nesse caso, o IIS não fecha a conexão após a resposta, portanto, o pacote final acaba aguardando 200 milissegundos.

  • O IIS 7 verifica o status de dois atributos para determinar o nível de tráfego de uma URL específica. O atributo frequentHitThreshold configura o número de solicitações e o atributo frequentHitTimePeriod configura o tempo permitido antes que essa URL seja julgada com frequência. Essas informações são usadas ao escrever módulos HTTP que usam essas informações para processamento. Para obter mais informações, consulte o artigo Método IHttpUrlInfo::IsFrequentlyHit .

  • Os atributos maxRequestEntityAllowed e uploadReadAheadSize , respectivamente, configuram limites para o número máximo de bytes permitidos no corpo da entidade de uma solicitação e o número de bytes que um servidor Web lerá em um buffer e passará para uma extensão ISAPI. Deve-se levar em consideração que aumentar esses valores permite que o usuário final carregue mais conteúdo, o que pode ter um efeito sobre os recursos de memória de runtime do IIS. É recomendável manter esses valores em um número consistente com as necessidades do aplicativo e, apenas em circunstâncias extremas, use o valor máximo.

Novidades no IIS 7.5

O IIS 7.5 adicionou o atributo authenticatedUserOverride ao <serverRuntime> elemento , que configura se o runtime do servidor do IIS 7 fornecerá a identidade do usuário autenticado ou a identidade do processo de trabalho nos métodos IHttpUser::GetPrimaryToken e IHttpUser::GetImpersonationToken . Esse atributo pode ser definido como UseAuthenticatedUser ou UseWorkerProcessUser, e esses valores especificam respectivamente se o runtime do servidor do IIS 7 fornecerá a identidade do usuário autenticado ou a identidade do processo de trabalho para qualquer módulo que esteja usando a representação.

Compatibilidade

Versão Observações
IIS 10.0 O <serverRuntime> elemento não foi modificado no IIS 10.0.
IIS 8.5 O <serverRuntime> elemento não foi modificado no IIS 8.5.
IIS 8.0 O <serverRuntime> elemento não foi modificado no IIS 8.0.
IIS 7.5 O atributo authenticatedUserOverride foi adicionado ao IIS 7.5.
IIS 7.0 O <serverRuntime> elemento foi introduzido no IIS 7.0.
IIS 6,0 O <serverRuntime> elemento substitui as seguintes propriedades de metabase do IIS 6.0:
  • Sethostname
  • MaxRequestEntityAllowed
  • UploadReadAheadSize

Instalação

O <serverRuntime> elemento está incluído na instalação padrão do IIS 7.

Instruções

Não há nenhuma interface do usuário que permita configurar o elemento para o <serverRuntime> IIS 7. Para obter exemplos de como configurar o <serverRuntime> elemento programaticamente, consulte a seção Exemplos de código deste documento.

Configuração

Atributos

Atributo Descrição
alternateHostName Atributo de cadeia de caracteres opcional.

Especifica o nome do host a ser usado para redirecionamento.
appConcurrentRequestLimit Atributo uint opcional.

Especifica o número máximo de solicitações que podem ser enfileiradas para um aplicativo.

O valor padrão é 5000.
authenticatedUserOverride Atributo de enumeração opcional.

Especifica se o runtime do servidor do IIS 7 fornecerá a identidade do usuário autenticado ou a identidade do processo de trabalho para módulos que estão usando representação.

Nota: Esse atributo foi adicionado ao IIS 7.5.
Valor Descrição
UseAuthenticatedUser Especifica que o IIS fornecerá o token do usuário autenticado; os aplicativos executados nesse contexto serão limitados a quaisquer restrições de acesso para a identidade do usuário autenticado.

O valor numérico é 1.
UseWorkerProcessUser Especifica que o IIS fornecerá o token para a identidade do processo de trabalho em vez de usar a identidade do usuário autenticado; os aplicativos executados nesse contexto serão limitados a quaisquer restrições de acesso para a identidade do processo de trabalho.

O valor numérico é 2.
O valor padrão é UseAuthenticatedUser.
enabled Atributo booliano opcional.

Especifica se os aplicativos no servidor Web podem fornecer conteúdo (true) ou não podem fornecer conteúdo (false).

O valor padrão é true.
enableNagling Atributo booliano opcional.

Especifica se a navegação está habilitada (true) ou desabilitada (false).

O valor padrão é false.
frequentHitThreshold Atributo uint opcional.

Especifica o número de vezes que uma URL deve ser solicitada, dentro do período de tempo especificado no atributo frequentHitTimePeriod , para ser considerado atingido com frequência. O valor deve estar entre 1 e 2147483647.

O valor padrão é 2.
frequentHitTimePeriod Atributo timeSpan opcional.

Especifica o intervalo de tempo no qual uma URL deve ser solicitada o número de vezes especificado no atributo frequentHitThreshold antes de ser considerada frequente.

O valor padrão é 00:00:10 (10 segundos).
maxRequestEntityAllowed Atributo uint opcional.

Especifica o número máximo de bytes que podem estar em um corpo de entidade de uma solicitação. Se o cabeçalho Content-Length especificar um número maior, o IIS enviará uma resposta de erro HTTP 403.

O valor padrão é 4294967295 (ilimitado).
uploadReadAheadSize Atributo uint opcional.

Especifica o número de bytes que um servidor Web lerá em um buffer e passará para uma extensão ou módulo ISAPI. Isso ocorre uma vez por solicitação de cliente. A extensão ou módulo ISAPI recebe dados adicionais diretamente do cliente. O valor deve estar entre 0 e 2147483647.

O valor padrão é 49152.

Elementos filho

Nenhum.

Exemplo de configuração

O exemplo de configuração a seguir define o <serverRuntime> atributo enable do elemento como true e configura o número de solicitações para que uma URL seja considerada "atingida com frequência" definindo o atributo frequentHitThreshold como 5 solicitações e o atributo frequentHitTimePeriod como 20 segundos.

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

Exemplo de código

Os exemplos de código a seguir definem o <serverRuntime> atributo enable do elemento como true e configuram o número de solicitações para que uma URL seja considerada "atingida com frequência" definindo o atributo frequentHitThreshold como 5 solicitações e o atributo frequentHitTimePeriod como 20 segundos.

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

Observação

Você deve ter certeza de definir o parâmetro commit como apphost ao usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de localização apropriada no arquivo 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()