<serviceHostingEnvironment>

Questo elemento definisce il tipo di cui l'ambiente host del servizio crea un'istanza per un determinato trasporto. Se questo elemento è vuoto, viene usato il tipo predefinito. Questo elemento può essere usato solo nei file di configurazione a livello di applicazione o computer.

<Configurazione>
  <system.serviceModel>
    <serviceHostingEnvironment>

Sintassi

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

Attributi ed elementi

Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.

Attributi

Attributo Descrizione
aspNetCompatibilityEnabled Valore booleano che indica se la modalità di compatibilità con ASP.NET è stata attivata per l'applicazione corrente. Il valore predefinito è false.

Quando questo attributo è impostato su true, le richieste ai servizi Windows Communication Foundation (WCF) passano attraverso la pipeline HTTP ASP.NET e la comunicazione tramite protocolli non HTTP è vietata. Per altre informazioni, vedere Servizi WCF e ASP.NET.
minFreeMemoryPercentageToActivateService Intero che specifica la quantità minima di memoria libera che deve essere disponibile per il sistema, prima che sia possibile attivare un servizio WCF. Attenzione: Se si specifica questo attributo insieme all'attendibilità parziale nel file web.config di un servizio WCF, il servizio verrà generato SecurityException quando viene eseguito il servizio.
multipleSiteBindingsEnabled Valore booleano che specifica se sono abilitate più associazioni IIS per sito.

IIS è costituito da siti Web contenitori di applicazioni virtuali che includono directory virtuali. È possibile accedere all'applicazione in un sito tramite una o più associazioni IIS. Un'associazione IIS fornisce due tipi di informazioni: un protocollo di associazione e delle informazioni di associazione. Il protocollo di associazione definisce lo schema in base al quale ha luogo la comunicazione, mentre le informazioni di associazione sono usate per accedere al sito. Un esempio di protocollo di associazione è HTTP. Le informazioni di associazione possono contenere un indirizzo IP, una porta, un'intestazione host, e così via.

In IIS è disponibile il supporto per specificare più associazioni per sito, questo comporta la presenza di più indirizzi di base per schema. Tuttavia, un servizio Windows Communication Foundation (WCF) ospitato in un sito consente l'associazione a un solo oggetto baseAddress per schema.

Per abilitare più associazioni IIS per sito per un servizio Windows Communication Foundation (WCF), impostare questo attributo su true. Si noti che l'associazione di più siti è supportata solo per il protocollo HTTP. L'indirizzo degli endpoint nel file di configurazione deve essere un URI completo.

Elementi figlio

Elemento Descrizione
<FiltriPrefissoIndirizzoBase> Raccolta di elementi di configurazione che specificano i filtri di prefisso degli indirizzi di base usati dall'host del servizio.
<serviceActivations> Sezione di configurazione in cui vengono descritte le impostazioni di attivazione.
<transportConfigurationTypes> Raccolta di elementi di configurazione che identificano il tipo di un determinato trasporto.

Elementi padre

Elemento Descrizione
serviceModel L'elemento radice di tutti gli elementi di configurazione di Windows Communication Foundation (WCF).

Commenti

Per impostazione predefinita, i servizi WCF vengono eseguiti side-by-side con ASP.NET nei domini applicazioni ospitati. Benché WCF e ASP.NET possano coesistere nello stesso dominio applicazione, per impostazione predefinita le richieste WCF non vengono elaborate dalla pipeline HTTP ASP.NET. Di conseguenza, diversi elementi della piattaforma delle applicazioni ASP.NET non sono disponibili per i servizi WCF. I metodi disponibili includono i seguenti:

  • Autorizzazione file/URL di ASP.NET

  • Rappresentazione di ASP.NET

  • Stato sessione basato su cookie

  • HttpContext.Current

  • Estensibilità della pipeline tramite HttpModule personalizzato

Se i servizi WCF devono funzionare nel contesto ASP.NET e comunicano solo su HTTP, è possibile usare la modalità di compatibilità con ASP.NET di WCF. Questa modalità viene attivata quando l'attributo aspNetCompatibilityEnabled è impostato su true a livello di applicazione. Le implementazioni dei servizi devono usare la classe AspNetCompatibilityRequirementsAttribute per dichiarare la propria capacità di essere in esecuzione in tale modalità di compatibilità. Quando la modalità di compatibilità è attiva si verifica quanto segue:

  • L'autorizzazione file/URL di ASP.NET viene applicata prima dell'autorizzazione WCF. Le decisioni di autorizzazione si basano sull'identità a livello di trasporto della richiesta. Le identità a livello di messaggio vengono ignorate.

  • L'esecuzione delle operazioni dei servizi WCF inizia nel contesto di rappresentazione di ASP.NET. Se per un servizio specifico sono attivate sia la rappresentazione di ASP.NET sia la rappresentazione di WCF, il sistema applica il contesto di rappresentazione di WCF.

  • HttpContext.Current può essere usato dal codice dei servizi WCF. Inoltre, ai servizi viene impedito di esporre endpoint non HTTP.

  • Le richieste WCF vengono elaborate dalla pipeline ASP.NET. Le richieste WCF possono inoltre essere elaborate dagli elementi HttpModules configurati per agire sulle richieste in ingresso. Questi elementi possono includere componenti della piattaforma di ASP.NET (ad esempio SessionStateModule) nonché moduli personalizzati di terze parti.

Esempio

Nell'esempio di codice seguente viene mostrato come abilitare la modalità di compatibilità con ASP.

Codice

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

Vedere anche