ASP.NET MVC gira su Mono

Sono trascorse solo poche settimane da quando Microsoft ha rilasciato il suo nuovo framework ASP.NET MVC 1.0, ed ora BigM ha annunciato di averne aperto il codice pubblicandolo sotto la propria licenza MS-PL che di fatto lo rende "Open Source".

Questo significa che si potrà iniziare a programmare usando C#, il pattern e Mono anche in ambienti diversi da quello Microsoft. Una cosa che da tempo stavo seguendo con interesse e che vi confesso non mi dispiace.

Michael Hutchinson, che già nei mesi scorsi aveva cercato di fare qualche hack per integrare il pattern MVC dentro Mono, ha ora rilasciato un add-in (in preview) che permetterà una integrazione migliore e senza troppi "cavilli".

Scaricate ora i packages per iniziare a giocare subito con Mono su Mac.

Technorati tags: , , ,

StaticDisplayLevels e il controllo Menu

Se state lavorando il webcontrol asp:Menu, e volete impostare il livello di profondità secondo il quale il menù elaborato e restituito dal provider associato al controllo ricordatevi di impostare la proprietà StaticDisplayLevels o DynamicDisplayLevels, a seconda del tipo di menu che state renderizzando.

Di default il valore è impostato su uno; tuttavia mi sono ritrovato in un frammento di codice oggi, per il quale non sono riuscito a comprendere come mai, nonostante non venisse esplicitamente dichiarata da nessuna parte questa proprietà, il mio menù si esplodeva fino al quarto livello.

Probabilmente mi sarà sfuggito qualcosa; ma in questo caso voglio rimanere ignorante, cioè non interessarmi oltre del finto problema e ho risolto con una dichiarazione esplicita della proprietà, risolvendo così tutti i miei problemi.

Technorati tags: ,

Debug di connessione remota ad un MS FTP Server da Mac OSX

Un paio di sabati fa ho avuto la necessità di cambiare l’indirizzo IP del mio housed server verso una classe di indirizzi completamente differente. L’operazione che di per se – a parte le operazioni di cambio DNS richieste per il caso specifico – non dovrebbe comportare alcunché, mi ha fatto arrovellare il cervello per una buona ora cercando di fare del debug e capire perchè – improvvisamente – dopo questo cambio non avevo più la possibilità di scrivere file sul server remoto, ma solo di leggerli.

La cosa buffa, infatti, era proprio questa, che nonostante riuscissi a collegarmi al server FTP, nonostante il mio nome utente e password fossero corretti, nonostante mi venisse restituita la lista dei file presenti sul server, non c’era verso di scrivere niente. Ricevevo sempre un messaggio di errore di transfer incomplete senza però saperne la causa.

La necessità di riavere indietro un servizio funzionante non ve la sto neanche a raccontare, quindi mi sono armato di santa pazienza ed ho iniziato ad investigare.

La prima cosa a cui ho pensato è stata quella di verificare il servizio del firewall del mio Windows Server 2003. In un primo momento non gli era nemmeno piaciuto il cambio di indirizzo fatto, perché addirittura abilitando o disabilitando il servizio, avevo comunque la possibilità di ricevere una risposta dal server, cosa questa assolutamente anormale. Primo step, quindi, riavviare il servizio Windows Firewall (ICS). Subito dopo, le cose sono tornate apposto, quanto meno per l’aspetto servizio disabilitato – accesso negato. Però continuavo a non poter scrivere file.

A questo punto ho cercato tra le righe del log files; nulla, semplicemente tante righe che mostravano il processo di autenticazione, ma nulla in merito alla scrittura. La cosa era al quanto strana. Come è possibile che non vi sia nemmeno una riga che dica accesso negato, permessi non validi e roba simile?

Prova successiva, disabilitare – temporaneamente il firewall – e vedere se tutto funziona. Ahimè si, senza firewall ero in grado di scrivere senza problemi. Almeno avevo compreso su cosa dovevo concentrarmi.

Ripasso al setaccio tutte le impostazioni e non c’è nulla di anomalo. A questo punto tento per la strada della replicabilità, ovvero, riesco a connettermi tramite un altro windows? La risposta è si, quindi c’è qualcosa che non va nella sessione che si stabilisce tra il mio client FTP per Mac – CyberDuck – e il server FTP Microsoft remoto. Ma cosa? Cyberduck nella sua session log non mostra errori. Provo allora ad utilizzare il Terminal per vedere se ottengo delle informazioni in più, ed effettivamente ottengo questo:

ftp> put bookmarks.html
local: bookmarks.html remote: bookmarks.html
500 'EPSV': command not understood
421 Service not available, remote server has closed connection.

Problema trovato: non riesco più a collegarmi in modalità passiva, infatti tentando di nuovo una connessione passiva con un client windows (che di default, invece, si imposta su attiva) ottenevo il medesimo problema.

Il codice di errore evidenziato – 500 e EPSV – sono per il relativo comando che viene utilizzato dal client per modificare il tipo di connessione da Attiva – default – a passiva (Quando in sostanza vedete scritto tipo di connessione automatica, sappiate che questo è quello che succede).

Modalità quest’ultima implementata per una risoluzione di molte problematiche celate dietro l’uso congiunto del servizio firewall assieme a quello FTP. Per chiarimenti sulla connessione attiva e passiva, consiglio questo documento in inglese.

Infatti, modificando le impostazioni del client, forzandolo quindi ad una connessione attiva, ed effettivamente tutto funziona.

A questo punto configurare nuovamente il server FTP di Microsoft per la modalità passiva e tutto torna a funzionare. Come? Si può seguire questa KB della Microsoft per impostare il range di porte che si vogliono far utilizzare al servizio FTP, ma ovviamente il tutto NON BASTA, perchè sul documento non si fa minimo accenno al fatto che bisogna forzare la mano al firewall indicandogli che non deve più accettare connessioni sulla porta 21 come di default.

Come fare? Passo passo:

Si deve aprire la finestra di configurazione del Firewall, quindi andare sulle proprietà avanzate, selezionare le proprietà dell’adattatore di rete locale, entrare nelle proprietà e disabilitare il servizio di FTP Server. Sembra un controsenso lo sò, ma fidatevi!

A questo punto andate nella schermata delle eccezioni, scegliete aggiungi servizio, fate sfoglia e puntate il percorso su C:\Windows\system32\intesrv e selezionate il file InetInfo.exe che altro non è che l’IIS Admin Service.

Fatto questo riavviate la macchina e vedrete che sarete in grado di connettervi in modalità passiva al vostro server FTP Microsoft.

Alle volte sono cose che capitano, ma se non altro, tra le varie analisi, purtroppo ho trovato nei log alcuni tentativi di accesso non desiderato. Qualcuno che ha tentato di farmi del (in)sano home-defacing?

Technorati tags: , ,