Runtime do Servidor <serverRuntime>

Visão geral

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

  • Definir o atributo enabled como true configurará o IIS 7 para servir conteúdo na URL em que o elemento <serverRuntime> está configurado, e definir o atributo enabled como falseconfigurará o IIS 7 para não servir conteúdo para essa URL.

  • O atributo alternateHostName especifica um nome de host diferente do nome do computador no cabeçalho de localização de conteúdo HTTP.

  • 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 o nagling, que é uma otimização para HTTP sobre TCP que aumenta a eficiência tentando 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 intervalo de tempo limite de 200 milissegundos expire ou até que o remetente indique que o envio de dados foi concluído. As versões 5.1 e anteriores do IIS usam o nagling para todos os dados enviados ao cliente.

    Observação

    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 oferecem 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 a quantidade de tempo permitida antes que a URL seja considerada como frequentemente visitada. 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 o aumento desses valores permite que o usuário final carregue mais conteúdo, o que pode ter um efeito sobre os recursos de memória de tempo de execução do IIS. Recomenda-se manter esses valores em um número consistente com as necessidades do aplicativo e, somente em circunstâncias extremas, usar o valor máximo.

Novidades no IIS 7.5

O IIS 7.5 adicionou o atributo authenticatedUserOverride ao elemento <serverRuntime>, que configura se o tempo de execução do servidor 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, respectivamente, especificam se o tempo de execução do servidor IIS 7 fornecerá a identidade do usuário autenticado ou a identidade do processo de trabalho para qualquer módulo que esteja usando representação.

Compatibilidade

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

Instalação

O elemento <serverRuntime> 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 <serverRuntime> para IIS 7. Para obter exemplos de como configurar o elemento <serverRuntime> programaticamente, confira 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 colocadas na fila para um aplicativo.

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

Especifica se o tempo de execução do servidor 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.

Observação: 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 Boolean opcional.

Especifica se os aplicativos no servidor Web são capazes de servir conteúdo (true) ou não são capazes de servir conteúdo (false).

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

Especifica se o nagling está habilitado (true) ou desabilitado (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 especificado no atributo frequentHitTimePeriod, para ser considerado atingido com frequência. O valor precisa 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 visitada com frequência.

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 de comprimento de conteúdo 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 do cliente. A extensão ou módulo ISAPI recebe quaisquer dados adicionais diretamente do cliente. O valor precisa 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 atributo enable do elemento <serverRuntime> como true e, em seguida, configura o número de solicitações para que uma URL seja considerada “frequentemente visitada” 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 atributo enable do elemento <serverRuntime> como true e, em seguida, configuram o número de solicitações para que uma URL seja considerada “frequentemente visitada” 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

Defina o parâmetro commit para apphost quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado 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()