L'operazione, apparentemente semplice, non era implementata con la prima versione di WCF. Questo perchè, data la varietà di protocolli con cui WCF ha a che fare e dato l'elevato numero di scenari gestibili, non è sempre possibile ottenere l'IP del client.
Con il Service Pack 1 della versione 3.5 e della versione 3.0 del .NET Framework è stata introdotta la classe RemoteEndpointMessageProperty:
1 RemoteEndpointMessageProperty endpointProperty =
2 OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name]
3 as RemoteEndpointMessageProperty;
4
5 string clientIP = endpointProperty.Address;
6 string clientPort = endpointProperty.Port;
Bisogna comunque fare attenzione. La proprietà non è disponibile nei messaggi ricevuti su protocolli MSMQ o named pipes (nel cui caso l'IP è sempre quello locale). Per completezza riporto da MSDN:
The property is not present on messages received through either a named pipes or MSMQ transport.
Availability of the property when using HTTP hosted in IIS depends on having a currently active request. Therefore, this property is not available after the request has completed, such as when performing a one-way receive.
The IP address and port number are that of the node from which the message was received. If a message goes through a relay or proxy, the IP address and port number of the respective relay or proxy is the one attached to the message by this property.
Be aware that the IP address and port could be spoofed by an attacker and thus should not be relied upon for security sensitive authentication or authorization unless additional application specific logic is added.
... ma è già qualcosa
.
E' indubbiamente il tool per .NET più utilizzato. Lutz Roeder ha fatto un lavoro decisamente superlativo ma, come dice lui stesso, è arrivato il momento di cambiare. Ed ecco che da qualche giorno il software è passato nelle mani di Red Gate che si occuperà di sviluppare le prossime versioni mantenendo comunque una versione free per le community.
E' evidente (e naturale) che questo significa che ci saranno versioni di .NET Reflector a pagamento ... purtroppo.
Voglio ringraziare Lutz Roeder per il lavoro che ha fatto che, vi assicuro, mi ha aiutato nella soluzione di numerosi "casi strani"
.
Buon lavoro Red Gate.
Da qualche giorno, come avrete notato, è online la nuova versione del sito dotnetside.org su Community Server 2008. Dopo varie peripezie finalmente sono riuscito a metterla su ma purtroppo non senza problemi. E' una prima versione ed il passaggio dalla precedente non è stato affatto facile. Stiamo pian piano risolvendo le varie problematiche e cercheremo di farlo nel più breve tempo possibile.
Segnalateci pertanto qualsiasi anomalia o suggerimento direttamente all'indirizzo info@dotnetside.org.
Grazie.

Almeno così dicono.

Tra le tante cose accadute in questi giorni il Progetto Mojave è quello che più mi ha fatto sorridere.
MITICI!!!

Ps.: La frase "The Experiment will continue. Stay Tuned." mi fa pensare ...
Da qualche ora ho rilasciato la prima release di Sql Script Generator. Ora è anche possibile integrare la generazione degli script in Sql Server Management Studio. Eseguite Sql Script Generator e da File -> Settings potete attivare/disattivare l'integrazione.
Segnalatemi qualsiasi suggerimento o anomalia ...

E lo sapevo che prima o poi qualcuno l'avrebbe fatto ...
How old were you when you started programming?
A quale età hai cominciato a programmare?
Con la promozione della quinta elementare i miei mi hanno regalato un fiammante Commodore64. Inizialmente ci giocavo e basta, ma poi, grazie al mio grande amico, ho scoperto lo strano libricino blu che era insieme alla confezione. Avevo 11 anni.
How did you get started in programming?
Come hai cominciato a programmare?
Ho copiato un listato preso dal manuale del C64. Era una semplice mongolfiera (con molta fantasia) che girava sul monitor rimbalzando sui bordi, ma io la guardavo a bocca aperta e ripetevo: "E' il codice che ho scritto che la fa muovere".
What was your first language?
Qual’è stato il tuo primo linguaggio di programmazione?
Immaginate un pò...BASIC
What was the first real program you wrote?
Qual’è stato il primo programma vero che hai scritto?
Sinceramente non me lo ricordo con esattezza. Ma ricordo il primo programmone sviluppato in quinta superiore che prevedeva la realizzazione di una partita doppia (ragioneria) in DB III. Era uno spettacolo. Dovrei avere il listato stampato ancora da qualche parte ...
What languages have you used since you started programming?
Quali linguaggi hai usato da quando hai cominciato a programmare?
BASIC, Turbo Pascal, DB III/IV, COBOL (RM-COBOL e AcuCOBOL), Visual Basic 6, VB.NET, C#
What was your first professional programming gig?
Quando è stato il tuo primo vero lavoro da programmatore?
Il mio primo lavoro è stato sviluppare verticali per un gestionale aziendale di una famosa software house italiana.
If you knew then what you know now, would you have started programming?
Con il senno di poi, rifaresti lo stesso il programmatore? Ricominceresti a programmare?
Si.
If there is one thing you learned along the way that you would tell new developers, what would it be?
Se ci fosse una cosa che hai imparato nella tua carriera e che vorresti dire ai giovani programmatori, cosa diresti?
Non credo di avere sufficiente esperienza per farlo. L'unica cosa che posso dire è fatelo solo se veramente vi piace e ne siete convinti, solo così tutto il resto vi sembrerà di scarsa importanza. Non deve assolutamente essere un ripiego.
What's the most fun you've ever had ... programming?
Qual’è la cosa più divertente che hai programmato?
Mi diverto ogni voltà che c'è qualche novità da sperimentare o mettere in pratica, perciò non saprei proprio dire...
Now, let’s tag someone else...
Adesso è l’ora di taggare qualcun’altro...

E' la prima volta per me e sono un pochettino emozionato. Ho pubblicato su CodePlex un piccolo progettino che mi sono sviluppato per velocizzare alcune operazioni. Magari può essere utile ad altri e il progettino può ulteriormente crescere, perciò ho deciso di pubblicarlo. 
Ma cosa è? Sql Script Generator è un tool per creare script di "riempimento" di database Sql Server. In pratica si seleziona il database sorgente e le relative tabelle ed il tool provvede a generare gli script sql per riempire lo stesso database. Può essere eventualmente utilizzato anche come una sorta di backup per ricreare il database da zero.
Inizialmente l'interfaccia era molto grezza, ma faceva egregiamente il suo dovere. Poi ho deciso di pubblicarlo e ho incluso i controlli di DockPanel Suite. Questa è l'interfaccia:
Le feature attuali sono elencate nella home page. C'è molto da migliorare (il codice soprattutto
, ma lo farò presto) e magari se avete suggerimenti di qualsiasi tipo sono sempre ben accetti ...
Link: http://www.codeplex.com/sqlgen

Ps: che caldo ... 
Vista la mancanza del profiler su Sql Express qualcuno ha pensato bene di svilupparne uno open source. Forse somiglia "troppo" all'originale ma devo dire che data la sua giovane età mi sembra un lavoro promettente.
Se vi interessa e volete provarlo, ecco il link: http://sqlprofiler.googlepages.com/.
E' disponibile la RTM di Hyper-V con ampio anticipo rispetto ai tempi inizialmente previsti, come spiega Piergiorgio qui. Grazie ad un "Attacco di Sistemismo Acuto"
, sto lavorando molto con Windows Server 2008 nelle ultime settimane e attendevo con ansia questo tool per la virtualizzazione decisamente innovativo e che avevo avuto modo di vedere durante il Workshop "Heroes {Community} Launch".
A margine di questa notizia devo dire che Windows Server 2008 è una favola, un sistema operativo server con i controfiocchi. C'è ancora da migliorare, c'è sempre qualcosa da migliorare, ma la strada è decisamente quella buona...

In questi giorni per via di un massiccio attacco verso una miriade di siti ancora affetti da questo problema, è tornato (ancora una volta) di moda parlare di Sql Injection. Scrissi un'articolo uscito su ioProgrammo ormai quasi quattro anni fa su come evitare in maniera mooolto semplice questi sgradevolissimi attacchi e nonostante se ne parli a bizzeffe ancora oggi sono molti i siti che, per mille motivi, non sono stati ancora "messi in regola"
.
Basterebbe utilizzare query parametriche (come minimo) per evitare che l'anomalia si verifichi eppure, siccome è un'operazione troppo tediosa, c'è ancora chi pensa che sia solo una perdita di tempo.
Comunque sia volevo segnalare molto velocemente due tool che possono aiutare a superare queste problematiche:
Spero che la segnalazione possa servire a qualcuno
.
L'attesa è finita ... diceva qualcuno
. Sì perchè mancava un riferimento in italia come questo nuovo blog targato Microsoft Italia: VSTSItalia. Un blog interamente dedicato a Visual Studio Team System e Team Foundation Server gestito dal nostro guru italiano Lorenzo Barbieri.
Ovviamente il primo post non poteva che riguardare l'installazione di TFS2008.
Complimenti Lorenzo !!! 
Domenica mattina. Il tempo non permette un salto al mare di Trani e perciò mi decido di tentare nuovamente l'arrivo a Castel del Monte. Due mesi fa ho ripreso la mia vecchia bici Benotto ferma da ormai più di 10 anni e mi sono posto un obiettivo: arrivare proprio a Castel del Monte. Sono circa 32 Km da Trani, ma praticamente tutti in perenne salita con alcuni tratti di pendenza al 6% !!!
Bene, stamattina ho fatto il bis
. Per la seconda volta sono arrivato a Castel del Monte. Non è molto, ne sono consapevole, 32 km su bici da strada sono pochissimi, ma fatti su una bici che ha 30 anni di vita ... sono soddisfazioni
.
Lo so che per molti di voi che fanno bici questo non è nulla, ma per me è una piccola vittoria. Prossimo obiettivo: Minervino Murge. Unico ostacolo: la sveglia della domenica mattina
.
Inizia e ti ripeti che puoi farcela. Metro dopo metro sali, la pendenza aumenta. Ce la fai, quasi. A momenti non fai che ripeterti: "Ma chi me lo fa fare". Poi vedi la strada che scorre sotto di te. Pedali. Non puoi fermarti, devi andare avanti. Dopo l'ultima curva arrivi alla cima, la fine della salita che significa l'inizio della discesa. Bellissimo. Non vedi l'ora di rifarlo.
More Posts
Next page »