<serviceHostingEnvironment ><serviceHostingEnvironment>

この要素は、環境をホストするサービスがインスタンス化する特定のトランスポートの型を定義します。This element defines the type the service hosting environment instantiates for a particular transport. この要素が空の場合は、既定の型が使用されます。If this element is empty, the default type is used. この要素は、アプリケーション レベルまたはコンピューター レベルの構成ファイルでのみ使用できます。This element can only be used at the application or machine level configuration files.

<configuration> <configuration>
   <System.servicemodel >   <system.serviceModel>
     <serviceHostingEnvironment >    <serviceHostingEnvironment>

構文Syntax

<serviceHostingEnvironment aspNetCompatibilityEnabled="Boolean"
                           minFreeMemoryPercentageToActivateService="Integer"
                           multipleSiteBindingsEnabled="Boolean">
  <baseAddressPrefixFilters>
    <add prefix="string" />
  </baseAddressPrefixFilters>
  <serviceActivations>
    <add factory="String"
         service="String" />
  </serviceActivations>
  <transportConfigurationTypes>
    <add name="String"
         transportConfigurationType="String" />
  </transportConfigurationTypes>
</serviceHostingEnvironment>

属性および要素Attributes and Elements

以降のセクションでは、属性、子要素、および親要素について説明します。The following sections describe attributes, child elements, and parent elements.

属性Attributes

属性Attribute 説明Description
aspNetCompatibilityEnabledaspNetCompatibilityEnabled ASP.NET の互換モードが現在のアプリケーションに対して有効になっているかどうかを示すブール値。A Boolean value indicating whether the ASP.NET compatibility mode has been turned on for the current application. 既定値は false です。The default is false.

この属性がにtrue設定されている場合、Windows Communication Foundation (WCF) サービスへの要求は ASP.NET http パイプラインを通過し、http 以外のプロトコルでの通信は禁止されます。When this attribute is set to true, requests to Windows Communication Foundation (WCF) services flow through the ASP.NET HTTP pipeline, and communication over non-HTTP protocols is prohibited. 詳細については、「 WCF Services と ASP.NET」を参照してください。For more information, see WCF Services and ASP.NET.
minFreeMemoryPercentageToActivateServiceminFreeMemoryPercentageToActivateService WCF サービスをアクティブ化する前に、システムで使用可能にする必要がある最小空きメモリ容量を指定する整数です。An integer that specifies the minimum amount of free memory that should be available to the system, before a WCF service can be activated. 注意: この属性を、WCF サービスの web.config ファイルで部分信頼と共に指定すると、 SecurityExceptionサービスが実行されたときにが発生します。Caution: Specifying this attribute along with partial trust in the web.config file of a WCF service will result in a SecurityException when the service is run.
multipleSiteBindingsEnabledmultipleSiteBindingsEnabled 1 つのサイトで複数の IIS バインディングが有効になっているかどうかを指定するブール値。A Boolean value that specifies whether multiple IIS bindings per site is enabled.

IIS は、仮想ディレクトリを含む仮想アプリケーションのコンテナーとしての Web サイトで構成されています。IIS consists of web sites, which are containers for virtual applications containing virtual directories. サイト内のアプリケーションに、1 つ以上の IIS バインディングからアクセスできます。The application in a site can be accessed through one or more IIS binding. IIS バインディングは、バインディング プロトコルとバインディング情報という 2 つの情報を提供します。An IIS binding provides two pieces of information: a binding protocol and binding information. バインディング プロトコルは通信を行うスキームを定義するもので、バインディング情報はサイトにアクセスするために使用する情報です。Binding protocol defines the scheme over which communication occurs, and binding information is the information used to access the site. バインディング プロトコルの例には HTTP があり、一方、バインディング情報には IP アドレス、ポート、ホスト ヘッダーなどを含めることができます。An example of a binding protocol can be HTTP, whereas binding information can contain an IP address, Port, host header, etc.

IIS ではサイトごとに複数の IIS バインディングを指定でき、これによりスキームごとに複数のベース アドレスをサポートできます。IIS supports specifying multiple IIS bindings per site, which results in multiple base addresses per scheme. ただし、サイトでホストされている Windows Communication Foundation (WCF) サービスでは、スキームごとに1つの baseAddress にしかバインドできません。However, a Windows Communication Foundation (WCF) service hosted under a site allows binding to only one baseAddress per scheme.

Windows Communication Foundation (WCF) サービス用にサイトごとに複数の IIS バインドを有効にするにtrueは、この属性をに設定します。To enable multiple IIS bindings per site for a Windows Communication Foundation (WCF) service, set this attribute to true. 複数のサイト バインディングは HTTP プロトコルに対してのみサポートされています。Notice that multiple site binding is supported only for the HTTP protocol. 構成ファイル内のエンドポイントのアドレスには完全な URI を指定する必要があります。The address of endpoints in the configuration file needs to be a complete URI.

子要素Child Elements

要素Element 説明Description
<baseAddressPrefixFilters><baseAddressPrefixFilters> サービス ホストによって使用されるベース アドレスのプレフィックス フィルターを指定する構成要素のコレクション。A collection of configuration elements that specify prefix filters for the base addresses used by the service host.
<serviceActivations のアクティブ化<serviceActivations> アクティベーション設定を記述する構成セクション。A configuration section that describes activation settings.
<transportConfigurationTypes><transportConfigurationTypes> 特定のトランスポートの型を識別する構成要素のコレクション。A collection of configuration elements that identify the type of a particular transport.

親要素Parent Elements

要素Element 説明Description
serviceModelserviceModel すべての Windows Communication Foundation (WCF) 構成要素のルート要素です。The root element of all Windows Communication Foundation (WCF) configuration elements.

RemarksRemarks

既定では、WCF サービスは、ホストされるアプリケーション ドメイン (AppDomain) で ASP.NET と並行で実行します。By default, WCF services run side-by-side with ASP.NET in hosted Application Domains (AppDomain). WCF と ASP.NET が同じ AppDomain で共存できても、既定では WCF 要求は ASP.NET HTTP パイプラインでは処理されません。Even though WCF and ASP.NET can coexist in the same AppDomain, WCF requests are not processed by the ASP.NET HTTP Pipeline by default. 結果として、ASP.NET アプリケーション プラットフォームのいくつかの要素は、WCF サービスでは使用できません。As a result, several elements of the ASP.NET application platform are not available to WCF services. これらの要素は次のとおりです。These include

  • ASP.NET ファイル/URL 承認ASP.NET File/URL Authorization

  • ASP.NET の偽装ASP.NET Impersonation

  • クッキー ベースのセッションの状態Cookie-based Session State

  • HttpContext.CurrentHttpContext.Current

  • カスタム HttpModule を経由するパイプライン拡張Pipeline Extensibility via custom HttpModule

WCF サービスが ASP.NET のコンテキストで機能し、HTTP 経由でのみ通信する必要がある場合は、WCF の ASP.NET 互換モードを使用できます。If your WCF services need to function in the ASP.NET context, and communicate only over HTTP, you can use WCF’s ASP.NET compatibility mode. このモードは、aspNetCompatibilityEnabled 属性がアプリケーション レベルで true に設定されている場合に有効です。This mode is turned on when the aspNetCompatibilityEnabled attribute is set to true at the application level. サービス実装では、AspNetCompatibilityRequirementsAttribute クラスを使用して互換モードで実行できる機能を宣言する必要があります。Service implementations must declare their ability to run in compatibility mode using the AspNetCompatibilityRequirementsAttribute class. 互換モードが有効な場合、When the compatibility mode is enabled,

  • ASP.NET ファイル/URL 承認が、WCF 承認の前に強制的に実行されます。ASP.NET File/URL Authorization is enforced prior to WCF authorization. 承認決定は、要求のトランスポート レベルの ID に基づいています。An authorization decision is based on the transport-level identity of the request. メッセージ レベルでの ID は、無視されます。Identities at the message level are ignored.

  • WCF サービス操作は、ASP.NET の偽装コンテキストで実行を開始します。WCF service operations start to execute in the ASP.NET impersonation context. ASP.NET の偽装と WCF の偽装の両方が特定のサービスで有効な場合は、WCF の偽装コンテキストが適用されます。If both ASP.NET impersonation and WCF impersonation are enabled for a specific service, the WCF impersonation context applies.

  • HttpContext.Current を WCF サービス コードから使用できるため、サービスは非 HTTP エンドポイントを公開しません。HttpContext.Current can be used from WCF service code, and services are prevented from exposing non-HTTP endpoints.

  • WCF 要求は、ASP.NET パイプラインによって処理されます。WCF requests are processed by the ASP.NET pipeline. 受信要求を処理するように構成された HttpModules は、WCF 要求も処理できます。HttpModules that have been configured to act on incoming requests can also process WCF requests. これらには、ASP.NET プラットフォーム コンポーネント (SessionStateModule など) とカスタム サードパーティ モジュールが含まれます。These can include ASP.NET platform components (e.g., SessionStateModule), as well as custom third party modules.

Example

次のコード サンプルは、ASP 互換モードを有効にする方法を示します。The following code sample shows how to enable ASP Compatibility Mode.

コードCode

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

関連項目See also