Sto solo imparando WCF e non riesco a capire una cosa fondamentale.indirizzo relativo dell'endpoint wcf
Sto creando un servizio WCF che voglio essere ospitato in IIS proprio come un'applicazione web con il proprio percorso come http://myhost/myapp/
e tutto il resto.
Sto creando il progetto di servizio WCF in VS, ho un file di *.svc
descriverlo, poi mi definiscono un semplice endpoint ad esso così:
<endpoint address=""
binding="basicHttpBinding"
contract="wcf_service_auth.IPshService" />
Poi che pubblico questo servizio come un Applicazione Web IIS a una directory virtuale, supponiamo che sia il nome psh_pub
, quindi posso accedere al servizio tramite l'url http://localhost/psh_pub/pshservice.svc/
. Mi mostra la pagina dei saluti WCF e mi fornisce un collegamento a WSDL, che mi fornisce la descrizione corretta di wsdl.
Va bene.
Il passaggio successivo: desidero aggiungere un endpoint MEX. Aggiungo al config:
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
che è troppo bene, il punto finale è accessibile all'indirizzo http://localhost/psh_pub/pshservice.svc/mex
e WcfTestClient.exe
mi dà corretta configurazione da questo URL.
Qui il problema arriva.
Ho un servizio WCF che funziona sotto IIS e voglio aggiungere un altro endpoint ad esso. Ad esempio, lascia che sia un endpoint net.tcp
. L'IIS è configurato di default per accettare net.tcp
connessioni a porta 808 e sto aggiungendo net.tcp
protocollo di proprietà della mia web app, e voglio aggiungere un endpoint al mio servizio simile:
<endpoint address=""
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />
e ora supponiamo che il mio servizio dovrebbe essere accessibile tramite l'url net.tcp://localhost:808/psh_pub/pshservice.svc
. Ma non lo è. E ogni "how-to" e manuale sul web dice che dovrei specificare l'indirizzo completo nel file di configurazione del genere:
<endpoint address="net.tcp://localhost:808/psh_pub/pshservice.svc"
binding="netTcpBinding"
contract="wcf_service_auth.IPshService" />
E se lo faccio, funziona. Ma se ospitiamo il servizio in un'altra directory virtuale, dovrò cambiare la configurazione. Se lo ospito sull'altro server, dovrò cambiare configurazione. Se lo ospito su più server, dovrò mantenere il maggior numero di configurazioni di server che ho.
Quindi le domande principali è:
C'è un modo in WCF per specificare un (o https) endpoint di un servizio WCF IIS-hosted net.tcp
senza specificare URL assoluto per questo?
Non so cosa ho appena fatto, ma ho un endpoint net.tcp funzionante con parametro "indirizzo" vuoto. comunque grazie per l'aiuto. – pushist1y