Tanti auguri di Buon Natale a tutti !!!
Il PortSharing è un meccanismo che permette, come è facile intuire, di condividere la stessa porta su diversi servizi. Nel mio specifico caso mi serviva per esporre i metadati del mio servizio su un secondo endpoint. Partiamo con l'osservare la configurazione del servizio. Definisco un baseAddress acquisito come indirizzo primario del mio servizio e come indirizzo, con l'aggiunta del segmento mex, dei metadati esposti con l'utilizzo della specifica WS-MetadataExchange:
<services>
<service name="MyService"
behaviorConfiguration="MyService_ServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:9999/MyService"/>
</baseAddresses>
</host>
<endpoint address=""
binding="netTcpBinding"
contract="IMyService"
bindingConfiguration="MyService_netTcpBinding"/>
<endpoint address="mex"
binding="netTcpBinding"
contract="IMetadataExchange"
bindingConfiguration="MyService_mexBinding"/>
</service>
</services>
I due endpoint fanno riferimento a due sezioni netTcpBinding dove imposto l'attributo portSharingEnabled:
<bindings>
<netTcpBinding>
<binding name="MyService_netTcpBinding" maxConnections="5"
portSharingEnabled="true">
<security mode="None">
<transport protectionlevel="None"/>
<security>
</binding>
<binding name="MyService_mexBinding"
portSharingEnabled="true">
<security mode="None">
<transport protectionlevel="None"/>
<security>
</binding>
</netTcpBinding>
</bindings>
Per abilitare la visualizzazione dei metadati impostiamo il relativo behavior del servizio:
<serviceBehaviors>
<behavior name="MyService_ServiceBehavior">
<serviceMetadata />
</behavior>
</serviceBehaviors>
Infine, affinchè tutto funzioni, da VS2008 Command Prompt dobbiamo eseguire, come amministratore della macchina, il tool da riga di comando:
C:\sc.exe config NetTcpPortSharing start= demand (Attenzione, lo spazio tra start= e demand è importante!!!)
Questo comando ci consente di avviare il servizio NetTcpPortSharing su richiesta, e quindi al primo utilizzo. Ora non ci resta che eseguire la nostra applicazione...
Maggiori info.
Refactoring continuo. Mi accorgo sempre di più come questo sia importante, quasi necessario. Ogni volta che vedo del codice, anche e soprattutto se scritto da me, sono tentato di riscriverlo completamente. In una forma migliore, più leggibile forse. Ma anche semplicemente per riorganizzarlo. Tendo a migliorare (chiaramente
) la parte di codice che mi passa tra le mani. Ovviamente il tutto senza causare regressioni.
Capita anche a voi? Avete anche voi questo istinto/bisogno irrefrenabile? 

Da oggi ho un fastidiosissimo problema su VS2008 SP1. In pratica non riesco a visualizzare le proprietà di nessun progetto. Causa problemi di connessione del nostro gestore nazionale, oggi non ho potuto chiedere a zio google perciò ho provato a far partire visual studio con il parametro /ResetSettings. Niente. Non ha funzionato. Stasera quindi ho chiesto consiglio e la risposta "sembra" essere arrivata. In pratica il tutto si dovrebbe risolvere con il comando:
devenv.exe /resetskippkgs
e dire che ci avevo pensato ma mi sembrava non c'entrasse nulla
e ormai stanco non ci ho neanche provato.

Domani a mente fresca sarà il mio primo pensiero appena in ufficio. Vi farò sapere... 
UPDATE: Funziona perfettamente !!!