#86 - Specificare il binding da utilizzare in IIS per i servizi in WCF
di Cristian Civera, in Windows Communication Foundation, 28 novembre 2008
I servizi sviluppati con Windows Communication Foundation possono essere ospitati da qualsiasi tipo di applicazione e fra queste anche su Internet Information Services (IIS). Questo è possibile mendiante i file con estensione .svc che permette di mettere in ascolto il servizio con binding di tipo basicHttpBinding, wsHttpBinding e webHttpBinding (utilizzato per servizi REST e Data Services).
Poiché IIS è in grado di esporre un sito su più schema (HTTP, HTTPS, ecc) e su più indirizzi con più domini o porte, mentre in WCF occorre specificare per ogni endPoint uno specifico indirizzo e schema, spesso si incappa nel seguente errore: This collection already contains an address with scheme HTTP wcf.
Questo avviene perché IIS passa l'informazione di hosting al servizio WCF che automaticamente deduce qual è indirizzo completo del svc, ma nel caso ci siano più possibilità occorre indicarlo specificatamente. Dal .NET Framework 3.5 SP1 una nuova sezione di configurazione di serviceHostingEnvironment permette di ovviare a questo problema:
<system.serviceModel> <serviceHostingEnvironment> <baseAddressPrefixFilters> <add prefix="http://services.aspitalia.com"/> </baseAddressPrefixFilters> </serviceHostingEnvironment> </system.serviceModel>
Nello script precedente, per esempio, si forza di dover ascoltare su http per uno specifico dominio. Nelle versioni precedenti al service pack, invece, è necessario creare un ServiceHostFactory personalizzato che sovrascriva CreateServiceHost per istanziare il servizio e passare manualmente l'uri base.
public class MyFactory : ServiceHostFactory { public override ServiceHost CreateServiceHost(Type t, Uri[] baseAddresses ) { return new ServiceHost(t, new Uri("http://services.aspitalia.com")) } }
Il factory va poi specificato nel file .svc con l'attributo Factory della direttiva ServiceHost.
<%@ ServiceHost Factory="MyFactory" Service="MyService" %>Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
-
#1010 - Usare jQuery in un custom editor di ASP.NET Dynamic Data Control
-
nuovo tool da ms resarch: dotolo. ottimizza il cariamento delle pagine #ajax, gira con #netfx3.5 http://u.aspitalia.com/ah
-
MetadataDiffViewer: aggiornato al .NET Framework 4.0, Silverlight 4.0 e Sharepoint 2010
-
#162 - Caricare un file XML da remoto tramite XDocument e HttpWebRequest
-
#197 - Attivazione dei servizi senza il file svc con WCF 4.0
-
.NET Framework 4.0 e VS 2010 in Release Candidate
-
#148 - Scoprire le pagine attualmente più richieste su IIS con LINQ e Microsoft.Web.Administration
-
Interoperabilità con WCF: invocare servizi da PHP e Flash
-
con questo caldo, capita ad hoc! RT @aspitalia Tutto per portarsi #aspnet4, #silverlight4 e #netfx4 sotto l'ombrellone http://u.aspitalia.com/k4
-
#177 - Gestire gli errori dei WCF Data Services
-
La piattaforma Microsoft per il cloud computing: Windows Azure
-
#173 - Usare i WCF Data Services con liste e entità personalizzate

Commenti
mi piace
non mi piace
Facebook
Twitter










