サーバー ランタイム <serverRuntime>

概要

<serverRuntime> 要素は、インターネット インフォメーション サービス (IIS) 7 サーバー ランタイムに関連する次の設定を構成します。

  • enabled 属性を true に設定すると、<serverRuntime> 要素が構成されている URL のコンテンツを提供するように IIS 7 が構成されます。enabled 属性を false に設定すると、その URL のコンテンツを提供しないように IIS 7 が構成されます。

  • alternateHostName 属性は、HTTP Content-location ヘッダーのコンピューター名と異なるホスト名を指定します。

  • appConcurrentRequestLimit 属性は、アプリケーションのキューに登録できる同時要求の最大数を指定します。

  • enableNagling 属性は、ネーグル処理を有効または無効にします。この処理は、データの送信前に必要なパケットの数を最小限に抑えることで効率を向上させる HTTP over TCP の最適化です。 これは、データ領域がいっぱいになるまで、200 ミリ秒のタイムアウト期間が経過するまで、または送信者がデータの送信が完了したことを示すまで、パケットの送信を待機することによって機能します。 IIS バージョン 5.1 以前では、クライアントに送信されるすべてのデータにネーグル処理が使用されます。

    Note

    ネーグル処理には特定の状況で欠点があります。これは、拡張機能がパケットを満たさない場合でも、応答が送信されるまでに 200 ミリ秒の遅延が発生することです。 この動作は、クライアントへの応答で HTTP キープアライブ ヘッダーをサポートする ISAPI 拡張機能を使用する場合に最もよく見られます。 この場合、IIS は応答後に接続を閉じないため、最終的なパケットは 200 ミリ秒待機します。

  • IIS 7 は、2 つの属性の状態をチェックして、特定の URL のトラフィック レベルを決定します。 URL が頻繁にヒットされたと判断されるまでの要求の数を frequentHitThreshold 属性に構成し、その許容時間を frequentHitTimePeriod 属性に構成します。 この情報は、この情報の処理に使用する HTTP モジュールを記述するときに使用されます。 詳細については、IHttpUrlInfo::IsFrequentlyHit メソッドに関する記事を参照してください。

  • maxRequestEntityAllowed 属性と uploadReadAheadSize 属性はそれぞれ、要求のエンティティ本体で許可される最大バイト数と、Web サーバーがバッファーに読み込んで ISAPI 拡張機能に渡すバイト数の制限を構成します。 これらの値を大きくすると、エンド ユーザーは IIS ランタイム メモリ リソースに影響を与える可能性のあるコンテンツをアップロードできるようになることを考慮する必要があります。 これらの値は、アプリケーションのニーズと一致する数値に保ち、最大値は特定の状況でのみ使用することをお勧めします。

IIS 7.5 の新機能

IIS 7.5 では、<serverRuntime> 要素に authenticatedUserOverride 属性が追加されました。この要素は、IIS 7 サーバー ランタイムが IHttpUser::GetPrimaryToken メソッドと IHttpUser::GetImpersonationToken メソッドで認証されたユーザーの ID またはワーカー プロセス ID のどちらを提供するかを構成します。 この属性は UseAuthenticatedUser または UseWorkerProcessUser に設定できます。これらの値は、IIS 7 サーバー ランタイムが偽装を使用するすべてのモジュールに対して、認証されたユーザーの ID またはワーカー プロセス ID を提供するかどうかをそれぞれ指定します。

互換性

バージョン メモ
IIS 10.0 <serverRuntime> 要素は、IIS 10.0 では変更されませんでした。
IIS 8.5 <serverRuntime> 要素は、IIS 8.5 では変更されませんでした。
IIS 8.0 <serverRuntime> 要素は IIS 8.0 では変更されませんでした。
IIS 7.5 authenticatedUserOverride 属性が IIS 7.5 に追加されました。
IIS 7.0 <serverRuntime> 要素が IIS 7.0 で導入されました。
IIS 6.0 <serverRuntime> 要素は、次の IIS 6.0 メタベース プロパティを置き換えます。
  • SetHostName
  • MaxRequestEntityAllowed
  • UploadReadAheadSize

段取り

<serverRuntime> 要素が IIS 7 の既定のインストールに含められます。

操作方法

IIS 7 の <serverRuntime> 要素を構成できるユーザー インターフェイスはありません。 <serverRuntime> 要素をプログラムで構成する方法の例については、このドキュメントの「コード サンプル」セクションを参照してください。

構成

属性

属性 説明
alternateHostName 省略可能な文字列属性。

リダイレクトに使用するホスト名を指定します。
appConcurrentRequestLimit 省略可能な uint 属性。

アプリケーションのキューに登録できる要求の最大数を指定します。

既定値は 5000 です。
authenticatedUserOverride 省略可能な列挙型属性。

IIS 7 サーバー ランタイムが、偽装を使用しているモジュールに対して、認証されたユーザーの ID またはワーカー プロセス ID を提供するかどうかを指定します。

注意: この属性は IIS 7.5 で追加されました。
Value 説明
UseAuthenticatedUser 認証されたユーザーのトークンを IIS が提供することを指定します。このコンテキストで実行されるアプリケーションは、認証されたユーザーの ID のアクセス制限までに制限されます。

この数値は 1 です。
UseWorkerProcessUser 認証されたユーザーの ID を使用する代わりに、IIS がワーカー プロセス ID のトークンを提供することを指定します。このコンテキストで実行されるアプリケーションは、ワーカー プロセス ID のアクセス制限までに制限されます。

この数値は 2 です。
既定値は UseAuthenticatedUser です。
enabled 省略可能で、 Boolean 型の属性。

Web サーバー上のアプリケーションがコンテンツを提供できるか (true) コンテンツを提供できないか (false) を指定します。

既定値は true です。
enableNagling 省略可能で、 Boolean 型の属性。

ネーグル処理が有効 (true) か無効 (false) かを指定します。

既定値は false です。
frequentHitThreshold 省略可能な uint 属性。

URL が頻繁にヒットされたと見なされるまでの、frequentHitTimePeriod 属性に指定された期間内の要求回数を指定します。 1 から 2147483647 までの値にする必要があります。

既定値は 2 です。
frequentHitTimePeriod 省略可能な timeSpan 属性。

URL が頻繁にヒットされたと見なされるまでの、frequentHitThreshold 属性に指定された要求回数の期間を指定します。

既定値は 00:00:10 (10 秒) です。
maxRequestEntityAllowed 省略可能な uint 属性。

要求のエンティティ本文に格納できる最大バイト数を指定します。 Content-Length ヘッダーで指定される数値が大きい場合、IIS は HTTP 403 エラー応答を送信します。

既定値は 4294967295 (無制限) です。
uploadReadAheadSize 省略可能な uint 属性。

Web サーバーがバッファーに読み取り、ISAPI 拡張機能またはモジュールに渡すバイト数を指定します。 これは、クライアント要求ごとに 1 回発生します。 ISAPI 拡張機能またはモジュールは、追加データをクライアントから直接受信します。 0 から 2147483647 までの値にする必要があります。

既定値は 49152 です。

子要素

なし。

構成サンプル

次の構成サンプルでは、URL が "頻繁にヒット" されたと見なされるまでの URL への要求数を構成します。これには、<serverRuntime> 要素の enable 属性を true に設定し、frequentHitThreshold 属性を要求数 5 に設定し、frequentHitTimePeriod 属性を 20 秒に設定します。

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

サンプル コード

次のコード サンプルでは、URL が "頻繁にヒット" されたと見なされるまでの URL への要求数を構成します。これには、<serverRuntime> 要素の enable 属性を true に設定し、frequentHitThreshold 属性を要求数 5 に設定し、frequentHitTimePeriod 属性を 20 秒に設定します。

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

Note

AppCmd.exe を使用してこれらの設定を構成する場合は、commit パラメーターを必ず apphost に設定する必要があります。 これにより、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()