Distribuzione di un servizio WCF ospitato in Internet Information Services (IIS)Deploying an Internet Information Services-Hosted WCF Service

Lo sviluppo e distribuzione di un servizio Windows Communication Foundation (WCF) ospitato in Internet Information Services (IIS) include le attività seguenti:Developing and deploying a Windows Communication Foundation (WCF) service that is hosted in Internet Information Services (IIS) consists of the following tasks:

  • Verificare che IIS, ASP.NET, WCF e il componente di attivazione WCF vengono installati e registrati correttamente.Ensure that IIS, ASP.NET, WCF, and the WCF activation component are correctly installed and registered.

  • Creare una nuova applicazione IIS o riusare un'applicazione ASP.NETASP.NET esistente.Create a new IIS application, or reuse an existing ASP.NETASP.NET application.

  • Creare un file con estensione svc per il servizio WCF.Create a .svc file for the WCF service.

  • Distribuire l'implementazione del servizio nell'applicazione IIS.Deploy the service implementation to the IIS application.

  • Configurare il servizio WCF.Configure the WCF service.

Per una procedura dettagliata della creazione di un servizio WCF ospitato in IIS, vedere Procedura: ospitare un servizio WCF in IIS.For a detailed walkthrough of creating an IIS-hosted WCF service, see How to: Host a WCF Service in IIS.

Verificare che IIS, ASP.NET e WCF siano installati e registrati correttamente.Ensure That IIS, ASP.NET and WCF Are Correctly Installed and Registered

WCF, IIS e ASP.NET devono essere installati i servizi WCF ospitati in IIS funzionino correttamente.WCF, IIS, and ASP.NET must be installed for IIS-hosted WCF services to function correctly. Le procedure per l'installazione di WCF (come parte di WinFXWinFX), ASP.NET e IIS variano a seconda della versione del sistema operativo in uso.The procedures for installing WCF (as part of the WinFXWinFX), ASP.NET and IIS vary depending on the operating system version being used. Per ulteriori informazioni sull'installazione di WCF e il WinFXWinFX, vedere programma di installazione Web di Microsoft .NET Framework 4.For more information about installing WCF and the WinFXWinFX, see Microsoft .NET Framework 4 Web Installer. Le istruzioni per l'installazione di IIS sono disponibili nella pagina sull' installazione di IIS.Instructions for installing IIS can be found at Installing IIS.

Il processo di installazione per il WinFXWinFX registra automaticamente WCF con IIS se IIS è già presente nel computer.The installation process for the WinFXWinFX automatically registers WCF with IIS if IIS is already present on the machine. Se IIS viene installato dopo la WinFXWinFX, è richiesto un passaggio aggiuntivo per registrare WCF con IIS e ASP.NETASP.NET.If IIS is installed after the WinFXWinFX, an additional step is required to register WCF with IIS and ASP.NETASP.NET. A tal fine, è possibile procedere come segue, a seconda del sistema operativo:You can do this as follows, depending on your operating system:

  • Windows XP SP2Windows XP SP2, Windows 7 e Windows Server 2003Windows Server 2003: usare il strumento di registrazione ServiceModel (ServiceModelReg.exe) strumento registrare WCF di IIS: per usare questo strumento, digitare ServiceModelReg.exe /i /x in Visual Studio prompt dei comandi., Windows 7, and Windows Server 2003Windows Server 2003: Use the ServiceModel Registration Tool (ServiceModelReg.exe) tool to register WCF with IIS: To use this tool, type ServiceModelReg.exe /i /x in the Visual Studio command prompt. Per aprire il prompt dei comandi, fare clic sul pulsante Start, selezionare Tutti i programmi, Microsoft Visual Studio 2012, Visual Studio Tools, quindi Prompt dei comandi di Visual Studio.You can open this command prompt by clicking the start button, selecting All Programs, Microsoft Visual Studio 2012, Visual Studio Tools, and Visual Studio Command Prompt

  • Windows VistaWindows Vista: installare il sottocomponente Componenti di attivazione di Windows Communication Foundation di WinFXWinFX.: Install the Windows Communication Foundation Activation Components subcomponent of the WinFXWinFX. A tale scopo, nel Pannello di controllo, fare clic su Aggiungi / Rimuovi programmi e quindi Aggiungi/Installazione componenti di Windows.To do this, in Control Panel, click Add or Remove Programs and then Add/Remove Windows Components. Verrà avviata l' Aggiunta guidata componenti di Windows.This activates the Windows Component Wizard.

  • Windows 7:Windows 7:

È necessario infine verificare che ASP.NET sia configurato per utilizzare .NET Framework 4.Finally you must verify that ASP.NET is configured to use the .NET Framework version 4. Per effettuare questa operazione, eseguire lo strumento ASPNET_Regiis con l'opzione -i.You do this by running the ASPNET_Regiis tool with the –i option. Per altre informazioni, vedere strumento di registrazione ASP.NET IISFor more information, see ASP.NET IIS Registration Tool

Creare una nuova applicazione IIS o riutilizzare un'applicazione ASP.NET esistenteCreate a New IIS Application or Reuse an Existing ASP.NET Application

Servizi WCF ospitati in IIS devono risiedere all'interno di un'applicazione IIS.IIS-hosted WCF services must reside inside of an IIS application. È possibile creare una nuova applicazione IIS per ospitare servizi WCF in modo esclusivo.You can create a new IIS application to host WCF services exclusively. In alternativa, è possibile distribuire un servizio WCF in un'applicazione esistente che ospita già ASP.NET 2.0ASP.NET 2.0 contenuto (ad esempio pagine aspx e servizi Web ASP.NET [ASMX]).Alternatively, you can deploy an WCF service into an existing application that is already hosting ASP.NET 2.0ASP.NET 2.0 content (such as .aspx pages and ASP.NET Web services [ASMX]). Per ulteriori informazioni su queste opzioni, vedere la "Hosting WCF Side-by-Side con ASP.NET" e "Hosting WCF Services in modalità di compatibilità ASP.NET" sezioni nel servizi WCF e ASP.NET.For more information about these options, see the "Hosting WCF Side-by-Side with ASP.NET" and "Hosting WCF Services in ASP.NET Compatibility Mode" sections in WCF Services and ASP.NET.

Si noti che in IIS 6.0IIS 6.0 e versioni successive un'applicazione di programmazione isolata e orientata a oggetti viene riavviata periodicamente.Note that IIS 6.0IIS 6.0 and later versions periodically restart an isolated object-oriented programming application. Il valore predefinito è 1740 minuti.The default value is 1740 minutes. Il valore massimo supportato è 71.582 minuti.The maximum value supported is 71,582 minutes. Il riavvio può essere disabilitato.This restart can be disabled. Per ulteriori informazioni su questa proprietà, vedere la PeriodicRestartTime.For more information about this property, see the PeriodicRestartTime.

Creare un file con estensione svc per il servizio WCFCreate an .svc File for the WCF Service

Servizi WCF ospitati in IIS sono rappresentati come file di dati speciali (file con estensione svc) nell'applicazione IIS.WCF services hosted in IIS are represented as special content files (.svc files) inside the IIS application. Questo modello è simile al modo in cui le pagine ASMX sono rappresentate all'interno di un'applicazione IIS come file con estensione asmx.This model is similar to the way ASMX pages are represented inside of an IIS application as .asmx files. Un file con estensione svc contiene una direttiva di elaborazione specifica di WCF (@ServiceHost) che consente a WCF infrastruttura host di attivare servizi ospitati in risposta ai messaggi in arrivo.A .svc file contains a WCF-specific processing directive (@ServiceHost) that allows the WCF hosting infrastructure to activate hosted services in response to incoming messages. La sintassi più comune per un file con estensione svc viene illustrata nell'istruzione seguente:The most common syntax for a .svc file is in the following statement.

<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>  

È costituita dalla direttiva @ServiceHost e da un solo attributo, Service.It consists of the @ServiceHost directive and a single attribute, Service. Il valore dell'attributo Service è il nome del tipo Common Language Runtime (CLR) dell'implementazione del servizio.The value of the Service attribute is the common language runtime (CLR) type name of the service implementation. L'utilizzo di questa direttiva equivale fondamentalmente alla creazione di un host del servizio tramite il seguente codice:Using this directive is basically equivalent to creating a service host using the following code.

new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );  

È inoltre possibile una configurazione di hosting aggiuntiva, ad esempio la creazione di un elenco di indirizzi di base per il servizio.Additional hosting configuration, such as creating a list of base addresses for the service can also be done. È anche possibile utilizzare un ServiceHostFactory personalizzato per estendere la direttiva per l'utilizzo con soluzioni di hosting personalizzate.You can also use a custom ServiceHostFactory to extend the directive for use with custom hosting solutions. Le applicazioni IIS che ospitano servizi WCF non sono responsabili della gestione della creazione e della durata di ServiceHost istanze.The IIS applications that host WCF services are not responsible for managing the creation and lifetime of ServiceHost instances. Crea l'infrastruttura di hosting di WCF gestito ServiceHost istanza in modo dinamico quando viene ricevuta la prima richiesta per il file con estensione svc.The managed WCF hosting infrastructure creates the necessary ServiceHost instance dynamically when the first request is received for the .svc file. L'istanza non viene rilasciata finché non viene chiusa in modo esplicito dal codice o finché l'applicazione non viene riciclata.The instance is not released until either it is closed explicitly by code or when the application is recycled.

Per ulteriori informazioni sulla sintassi dei file con estensione svc, vedere @ServiceHost .For more information about the syntax for .svc files, see @ServiceHost.

Distribuire l'implementazione del servizio all'applicazione IISDeploy the Service Implementation to the IIS Application

Servizi WCF ospitati in IIS utilizzano lo stesso modello di compilazione dinamica come ASP.NET 2.0ASP.NET 2.0.WCF services hosted in IIS use the same dynamic compilation model as ASP.NET 2.0ASP.NET 2.0. Come ASP.NETASP.NET, è possibile distribuire il codice di implementazione per i servizi WCF ospitati in IIS in vari modi e in varie posizioni, come indicato di seguito:Just as with ASP.NETASP.NET, you can deploy the implementation code for IIS-hosted WCF services in several ways at various locations, as follows:

  • Come file dll precompilato nella Global Assembly Cache (GAC) o nella directory \bin dell'applicazione.As a precompiled .dll file located in the global assembly cache (GAC) or in the application’s \bin directory. I file binari precompilati non vengono aggiornati finché non viene distribuita una nuova versione della libreria di classi.Precompiled binaries are not updated until a new version of the class library is deployed.

  • Come file di origine non compilati situati nella directory \App_Code dell'applicazione.As un-compiled source files located in the application’s \App_Code directory. I file di origine situati in questa directory vengono richiesti dinamicamente durante l'elaborazione della prima richiesta dell'applicazione.Source files located in this directory are dynamically required when processing the application’s first request. Qualsiasi modifica ai file nella directory \App_Code provoca il riciclo e la ricompilazione dell'intera applicazione quando viene ricevuta la richiesta successiva.Any changes to files in the \App_Code directory cause the entire application to be recycled and recompiled when the next request is received.

  • Come codice non compilato posizionato direttamente nel file con estensione svc.As un-compiled code placed directly in the .svc file. Codice di implementazione può essere anche trovarsi in linea nel file con estensione svc del servizio, dopo il @ServiceHost direttiva.Implementation code can also be located inline in the service’s .svc file, after the @ServiceHost directive. Qualsiasi modifica al codice inline provoca il riciclo e la ricompilazione dell'applicazione quando viene ricevuta la richiesta successiva.Any changes to inline code cause the application to be recycled and recompiled when the next request is received.

Per ulteriori informazioni sul ASP.NET 2.0ASP.NET 2.0 modello di compilazione, vedere Cenni preliminari sulla compilazione di ASP.NET.For more information about the ASP.NET 2.0ASP.NET 2.0 compilation model, see ASP.NET Compilation Overview.

Configurare il servizio WCFConfigure the WCF Service

Servizi WCF ospitati in IIS consente di archiviare la configurazione nel file Web. config dell'applicazione.IIS-hosted WCF services store their configuration in the applications Web.config file. Servizi ospitati in IIS utilizzano gli stessi elementi di configurazione e la sintassi come servizi WCF ospitati all'esterno di IIS.IIS-hosted services use the same configuration elements and syntax as WCF services hosted outside of IIS. I vincoli seguenti sono tuttavia specifici per l'ambiente host IIS:However, the following constraints are unique to the IIS hosting environment:

  • Indirizzi di base per i servizi ospitati in IIS.Base addresses for IIS-hosted services.

  • Le applicazioni di servizi WCF hosting all'esterno di IIS possono controllarne l'indirizzo di basa dei servizi che ospitano passando un set di base indirizzo URI per il ServiceHost costruttore o fornendo un <host > elemento il configurazione del servizio.Applications hosting WCF services outside of IIS can control the base address of the services they host by passing a set of base address URIs to the ServiceHost constructor or by providing a <host> element in the service’s configuration. I servizi ospitati in IIS non sono in grado di controllare i propri indirizzi di base che corrispondono agli indirizzi dei rispettivi file con estensione svc.Services hosted in IIS do not have the ability to control their base address; the base address of an IIS-hosted service is the address of its .svc file.

Indirizzi endpoint per i servizi ospitati in IISEndpoint Addresses for IIS-Hosted Services

Quando sono ospitati in IIS, gli indirizzi endpoint sono sempre considerati relativi all'indirizzo del file con estensione svc che rappresenta il servizio.When hosted in IIS, endpoint addresses are always considered to be relative to the address of the .svc file that represents the service. Ad esempio, se l'indirizzo di base di un servizio WCF è http://localhost/Application1/MyService.svc con la configurazione dell'endpoint seguente.For example, if the base address of a WCF service is http://localhost/Application1/MyService.svc with the following endpoint configuration.

<endpoint address="anotherEndpoint" .../>  

Ciò fornisce un endpoint che può essere raggiunto al "http://localhost/Application1/MyService.svc/anotherEndpoint".This provides an endpoint that can be reached at "http://localhost/Application1/MyService.svc/anotherEndpoint".

Analogamente, l'elemento di configurazione di endpoint che utilizza una stringa vuota come indirizzo relativo fornisce un endpoint raggiungibile al http://localhost/Application1/MyService.svc, ovvero l'indirizzo di base.Similarly, the endpoint configuration element that uses an empty string as the relative address provides an endpoint reachable at http://localhost/Application1/MyService.svc, which is the base address.

<endpoint address="" ... />  

Per gli endpoint del servizio ospitati in IIS è necessario utilizzare sempre indirizzi endpoint relativi.You must always use relative endpoint addresses for IIS-hosted service endpoints. Fornisce un indirizzo endpoint completo (ad esempio, http://localhost/MyService.svc) può comportare errori nella distribuzione del servizio se l'indirizzo dell'endpoint non punta all'applicazione IIS che ospita il servizio che espone l'endpoint.Supplying a fully-qualified endpoint address (for example, http://localhost/MyService.svc) can lead to errors in the deployment of the service if the endpoint address does not point to the IIS-application that hosts the service exposing the endpoint. L'utilizzo di indirizzi endpoint relativi per i servizi di hosting evita potenziali conflitti.Using relative endpoint addresses for hosted services avoids these potential conflicts.

Trasporti disponibiliAvailable Transports

Servizi WCF ospitati in IIS 5.1 e IIS 6.0IIS 6.0 sono limitati all'utilizzo di comunicazioni basate su HTTP.WCF services hosted in IIS 5.1 and IIS 6.0IIS 6.0 are restricted to using HTTP-based communication. Su queste piattaforme IIS, la configurazione di un servizio ospitato affinché utilizzi un'associazione non HTTP, comporta un errore durante l'attivazione del servizio.On these IIS platforms, configuring a hosted service to use a non-HTTP binding results in an error during service activation. Per IIS 7.0IIS 7.0, i trasporti supportati includono HTTP, Net.TCP, Net.Pipe, Net.MSMQ e msmq.formatname per la compatibilità delle versioni precedenti con le applicazioni MSMQ esistenti.For IIS 7.0IIS 7.0, the supported transports include HTTP, Net.TCP, Net.Pipe, Net.MSMQ, and msmq.formatname for backwards compatibility with existing MSMQ applications.

Protezione del trasporto HTTPHTTP Transport Security

Servizi WCF ospitati in IIS possono avvalersi del protocollo HTTP (ad esempio, HTTPS e HTTP schemi di autenticazione, ad esempio Basic, Digest e l'autenticazione integrata di Windows) di sicurezza del trasporto, purché la directory virtuale IIS contenente il servizio supporti tali Impostazioni.IIS-hosted WCF services can make use of HTTP transport security (for example, HTTPS and HTTP authentication schemes such as Basic, Digest, and Windows Integrated Authentication) as long as the IIS virtual directory that contains the service supports those settings. Le impostazioni di sicurezza del trasporto HTTP sull'associazione di un endpoint di hosting devono corrispondere alle impostazioni di sicurezza del trasporto sulla directory virtuale IIS che lo contiene.The HTTP Transport Security settings on a hosted endpoint’s binding must match the transport security settings on the IIS virtual directory that contains it.

Ad esempio, un endpoint WCF configurato per utilizzare l'autenticazione digest HTTP deve risiedere in una directory virtuale IIS configurata anch ' per consentire l'autenticazione digest HTTP.For example, a WCF endpoint configured to use HTTP digest authentication must reside in an IIS virtual directory that is also configured to allow HTTP digest authentication. Combinazioni non corrispondenti di impostazioni di IIS e le impostazioni di endpoint WCF generato un errore durante l'attivazione del servizio.Unmatched combinations of IIS settings and WCF endpoint settings result in an error during service activation.

Vedere ancheSee Also

Hosting in Internet Information ServicesHosting in Internet Information Services
Procedure consigliate per l'hosting in Internet Information Services (IIS)Internet Information Services Hosting Best Practices
Windows Server AppFabric con funzionalità di HostingWindows Server App Fabric Hosting Features