IIS 7.0 用 Web プレイリスト - 構成
公開日: 2008 年 2 月 27 日 (作業者: vsood (英語))
更新日: 2009 年 9 月 9 日 (作業者: vsood (英語))
必要条件
IIS 7.0 用 Web プレイリスト拡張機能をインストールするには、Web プレイリストの Readme (英語) で、インストールに関する注意 (Installation Notes) をお読みください。
構成
ハンドラー属性
プレイリストを作成するにあたっては、以下に示すプレイリスト ハンドラー属性を把握しておいてください。 これらの属性は、プレイリスト ハンドラー スキーマ内に定義します。これらは、applicationHost.config ファイルで設定できます。
ルール属性 |
必須/省略可能 |
型 |
許容値 |
既定値 |
説明 |
---|---|---|---|---|---|
enabled |
省略可能 |
bool |
true/false |
true |
対象ノードで Web プレイリストを有効にするかどうかを指定します。 |
queryStringDelimiter |
省略可能 |
string |
HTTP でクエリ文字列の有効な区切り記号として認識されるすべての値 |
; |
URL 内でのクエリ文字列の正しい区切り記号を指定します。 最も一般的な区切り記号 (&) はそのまま XML では認識されないため、この指定が必要です。 |
allowAbsolutePaths |
省略可能 |
bool |
true/false |
false |
プレイリストのメディア エントリに絶対パスと UNC パスを許容するかどうかを指定します。 管理者だけがプレイリストを作成できるという場合以外は、既定値 (false) を使用することをお勧めします。 この値が true のとき、Web プレイリストでは絶対パスを指定して Web サーバーから任意のファイルをダウンロードできます。 この設定は、アプリケーション プールに割り当てられている資格情報にも依存します。 |
defaultSessionProvider |
省略可能 |
string |
sessionProviders コレクションに含まれる名前に対応する有効な文字列 |
InMemory |
プレイリストのセッション情報を保存するために使用するセッション保持プロバイダーを指定します。 既定のインストールの場合、InMemory および ASP.NET の 2 つから選択できます。 |
maximumPlaylistDepth |
省略可能 |
uint |
1 から 1024 までの任意の符号なし整数 |
5 |
プレイリストの既定の階層数を指定します。 |
allowClientCache |
省略可能 |
bool |
true/false |
false |
クライアントでコンテンツをキャッシュできるかどうかを指定します。 これによって、応答内に pragma:no-cache が設定されます。 |
要素 |
説明 |
---|---|
winHttpSetTimeouts |
プレイリスト内の HTTPD 要求に対するタイムアウト オプションを設定します。 |
sessionProviders |
プレイリストのセッション保持プロバイダーを選択します。 既定では、InMemory および ASP.NET から選択できます。 |
sessionOptions |
特定セッションのタイムアウトを設定します。 |
accessOptions |
特定パスの偽装設定を設定します。設定した偽装設定は、プレイリスト内で使用できます。 |
playlistProviders |
Web プレイリストを使用すると、カスタム プロバイダーを記述できます。この要素には、利用できるプロバイダーの構成を指定します。 |
ouputFormts | Web プレイリストへの出力形式の拡張子を指定するためのコレクションです。 この要素を使用して、形式名、XSLT パス、その形式に関連するコンテンツ タイプを指定できます。 |
スキーマ
プレイリスト ハンドラー スキーマは、System.webServer の下の media セクション グループと playlist 構成セクションの一部です。プレイリスト ハンドラーは、以下のプレイリスト スキーマを使用します。このスキーマは、機能に付属の IISMedia_schema ファイルに記述されています。
<!--
<sectionGroup name="media">
<section name="playlist" />
</sectionGroup>
-->
<configSchema>
<sectionSchema name="system.webServer/media/playlist">
<attribute name="enabled" type="bool" defaultValue="true" />
<attribute name="queryStringDelimiter" type="string" defaultValue=";" />
<attribute name="allowAbsolutePaths" type="bool" defaultValue="false" />
<attribute name="defaultSessionProvider" type="string" defaultValue="InMemory" />
<attribute name="maximumPlaylistDepth" type="uint" defaultValue="5" validationType="integerRange" validationParameter="1,1024"/>
<attribute name="allowClientCache" type="bool" defaultValue="false" />
<element name="winHttpSetTimeouts">
<attribute name="httpdResolveTimeout" type="uint" defaultValue="0" validationType="integerRange" validationParameter="0,2147483647"/>
<attribute name="httpdConnectTimeout" type="uint" defaultValue="60000" validationType="integerRange" validationParameter="0,2147483647"/>
<attribute name="httpdSendTimeout" type="uint" defaultValue="30000" validationType="integerRange" validationParameter="0,2147483647"/>
<attribute name="httpdReceiveTimeout" type="uint" defaultValue="30000" validationType="integerRange" validationParameter="0,2147483647"/>
</element>
<element name="sessionProviders">
<collection addElement="sessionProvider" removeElement="remove" clearElement="clear" allowUnrecognizedAttributes="true" >
<attribute name="name" type="string" required="true" isUniqueKey="true" />
<attribute name="persistenceType" type="string" />
<attribute name="inactivityTimeout" type="uint" defaultValue="120" validationType="integerRange" validationParameter="1,525600"/>
<attribute name="timeToLive" type="uint" defaultValue="1440" validationType="integerRange" validationParameter="1,525600"/>
<attribute name="maxActiveSessions" type="uint" defaultValue="0" validationType="integerRange" validationParameter="0,2147483647"/>
</collection>
</element>
<element name="accessOptions">
<collection addElement="accessOption" removeElement="remove" clearElement="clear" allowUnrecognizedAttributes="true">
<attribute name="path" type="string" required="true" isUniqueKey="true" />
<attribute name="userName" type="string" required="true"/>
<attribute name="password" type="string" required="true" caseSensitive="true" encrypted="true" defaultValue="[enc:AesProvider::enc]" />
<attribute name="logonMethod" type="enum" defaultValue="ClearText">
<enum name="Interactive" value="0"/>
<enum name="Batch" value="1"/>
<enum name="Network" value="2"/>
<enum name="ClearText" value="3"/>
</attribute>
</collection>
</element>
<element name="playlistProviders">
<collection addElement="playlistProvider" removeElement="remove" clearElement="clear" allowUnrecognizedAttributes="true">
<attribute name="description" type="string" />
<attribute name="progid" type="string" required="true"/>
<attribute name="extension" type="string" required="true" isUniqueKey="true"/>
</collection>
</element>
<element name="sessionOptions">
<attribute name="maxConcurrentConnections" type="uint" defaultValue="4" validationType="integerRange" validationParameter="0,2147483647"/>
<attribute name="allowSkipAfterMinPercent" type="uint" defaultValue="0" validationType="integerRange" validationParameter="0,100"/>
</element>
<element name="outputFormats">
<collection addElement="outputFormat" removeElement="remove" clearElement="clear" allowUnrecognizedAttributes="true" >
<attribute name="enabled" type="bool" defaultValue="true" />
<attribute name="format" type="string" required="true" isUniqueKey="true"/>
<attribute name="xsltSrc" type="string" />
<attribute name="contentType" type="string" />
</collection>
</element>
</sectionSchema>
</configSchema>
構成シナリオ
共有ホスティング
このシナリオでは、1 台のサーバーが複数のサイトで共有され、 サイトごとの管理者と、サーバーのスーパー管理者が存在します。 この場合、スーパー管理者は、サイト管理者に対して各自のサイト ホーム内での自由は与えつつ、他のサイトのコンテンツやその他の要素にはアクセスできないようにする必要があります。 また、基本のサーバー リソースがどのサイトからもアクセスされないように保護する必要もあります。 サイト管理者またはサイト ユーザーに対し、新しいプレイリスト作成のためのアクセスを許可することは問題ありません。
allowAbsolutePaths=false に設定します。
重要 以下に示すのは最も重要な手順です。 この手順を実行しない場合、下位レベルのサイト管理者はサーバー上のあらゆるファイルを自分のプレイリストに追加して、ファイルをダウンロードできるようになります。 これはセキュリティ上問題になる可能性があります。 既定では、この設定はハンドラーの構成において false に設定されています。
その他すべての設定には既定値を使用できます。**
1. [操作] ウィンドウで、[機能設定の編集] をクリックします。
2. [機能設定の編集] ダイアログ ボックスで、[絶対/UNC パスを許可する] チェック ボックスをオフにします。
エンタープライズ
このシナリオでは、サーバーはエンタープライズに使用されています。エンタープライズ ユーザーはプレイリストを作成できず、サーバーのスーパー管理者だけがプレイリストを作成できます。 プレイリストで使用されるコンテンツは、エンタープライズ ネットワーク上のローカルにもリモートにも散在しています。
allowAbsolutePaths=true に設定します。
この設定は必要です。この設定をしておかないと、Web プレイリストからローカル パス (例: C:\mydir) またはリモート UNC パス (例: file:///\\myServer\media) へのアクセスを試行したとき、Web プレイリストは失敗します。 プレイリストを作成できるのはスーパー管理者だけなので、この設定を true にしても大きなリスクはありません。 既定では、この設定はプレイリスト ハンドラーの構成において false に設定されています。
その他すべての設定には既定値を使用できます。**
前のシナリオのスクリーン ショットを参照してください。
セッション状態の保持
このシナリオでは、最初にロード バランサーによってサーバー ファーム内のサーバーに負荷が分散されます。 つまり、すべての要求が同じサーバーに到達するという保証はありません。 また、セッションは既定で IIS ワーカー プロセス メモリに保存されるため、何らかの理由でワーカー プロセスが再利用された場合、セッション情報は失われます。 したがって、このシナリオではセッション状態の保存が必要ということになります。
persistenceType=ASP.NET に設定します。
こうすると、ASP.NET セッション状態保持によってセッション データが保存されます。
必要条件
- このシナリオでは、ASP.NET がインストールされ、ASP.NET セッション状態管理が構成されていることが必要です。 この構成は、IIS マネージャーで行うことができます。
制限事項
- このセッション状態保持には ASP.NET が必要なため、Windows Server 2008 の Server Core インストールではこのセッション状態保持は機能しません。
- ASP.NET セッション状態保持を使用するには、該当アプリケーション プールに対して IIS が統合モードで実行されている必要があります。
- AllowSkipAfterMinPercent は 0 に設定する必要があります。悪意のあるクライアントに対しスキップ/シーク動作を強制するには、クライアント側のロジックが必要です。
メモ ASP.NET セッション状態保持は、IIS マネージャーの [セッション状態] 機能ページの設定を使用して構成できます。詳細についてはこの記事では取り上げません。 Web プレイリストでは、あらゆる種類の ASP.NET セッション状態保持がサポートされています。
その他の情報
- ASP.NET の状態管理について (https://support.microsoft.com/kb/307598/ja)