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

概要

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

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

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

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

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

    注意

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

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

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

IIS 7.5 の新機能

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

互換性

Version メモ
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 で追加されました。
説明
UseAuthenticatedUser IIS が認証されたユーザーのトークンを提供することを指定します。このコンテキストで実行されるアプリケーションは、認証されたユーザーの ID に対するアクセス制限に制限されます。

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

数値は です 2
既定値は UseAuthenticatedUser です。
enabled オプション の Boolean 属性。

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

既定値は true です。
enableNagling オプション の Boolean 属性。

ナグリングが有効 (true) か無効 (false) かを指定します

既定値は false です。
frequentHitThreshold オプションの uint 属性。

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

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

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

既定値は 00:00:10 (10 秒) です。
maxRequestEntityAllowed オプションの uint 属性。

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

既定値は 4294967295 (無制限) です。
uploadReadAheadSize オプションの uint 属性。

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

既定値は 49152 です。

子要素

なし。

構成サンプル

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

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

サンプル コード

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

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

注意

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()