2013-04-05 12 views
8

In che modo un host di servizio in WCF interagisce con la configurazione da web.config o app.config. Quando creo un host di servizio, specifica solo un URL nel costruttore di host di servizio e la classe del servizio.relazione tra la configurazione in app.config o web.config e il codice in WCF

Ma in app.config o web.config ho un altro elenco di endpoint, ciascuno con il proprio URL specifico. Quindi, come fa Wcf a gestire questa situazione? Quale endpoint ci vuole da app.config o web.config?

+0

Ho modificato il titolo. Per favore vedi, "[Le domande dovrebbero includere" tag "nei loro titoli?] (Http://meta.stackexchange.com/questions/19190/)", dove il consenso è "no, non dovrebbero". –

risposta

2

L'indirizzo dell'endpoint è relativo all'indirizzo di base dell'host del servizio. Ad esempio, se si ha questi endpoint:

<service name="MyService"> 
    <endpoint address="" binding="ws2007HttpBinding" contract="IMyService" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
</service> 

e un servizio di host dell'URL di http://localhost:7777, allora si sarebbe esporre il servizio http://localhost:7777, ei metadati su http://localhost:7777/mex.

+0

Avevo bisogno di un secondo endpoint per il mio esempio, quindi ho scelto un innocuo. Devi solo esporre un endpoint MEX se vuoi che i tuoi client siano in grado di usare 'svcutil.exe' senza fare un HTTP GET per il WSDL. Non mi prendo cura di me stesso con MEX, ho solo 'nel mio comportamento di servizio. –

1

Quindi, in generale, l'interazione dipende da diversi fattori: l'ambiente di interruzione, il codice e le impostazioni del Web o dell'app.

Secondo MSDN (http://msdn.microsoft.com/en-us/library/ms733749.aspx): Esistono due modi per specificare gli indirizzi degli endpoint per un servizio in WCF. È possibile specificare un indirizzo assoluto per ciascun endpoint associato al servizio oppure fornire un indirizzo di base per ServiceHost di un servizio e quindi specificare un indirizzo per ciascun endpoint associato a questo servizio definito in base a questo indirizzo di base. È possibile utilizzare ciascuna di queste procedure per specificare gli indirizzi degli endpoint per un servizio in configurazione o codice. Se non si specifica un indirizzo relativo, il servizio utilizza l'indirizzo di base.

Inoltre, è necessario prestare attenzione al proprio ambiente di hosting. Ad esempio, IIS stesso genera l'indirizzo di base per l'endpoint (anche se è specificato in config), mentre negli host interni lo legge dalla configurazione.

Il link qui sopra descrive notevolmente le caratteristiche del specificando il vostro indirizzo in codice o di configurazione, e la sua dependance sul vostro ambiente host

Problemi correlati