ASP.NET Routing e Authorization

Ho utilizzato il routing asp.net per la gestione delle lingue in un sito web registrando nell'Application_Start del Global.asax:
routes.Add("en", New Route("en/{*path}", New GlobalizationRouteHandler(CultureInfo.GetCultureInfo("en"))))
routes.Add("it", New Route("it/{*path}", New GlobalizationRouteHandler(CultureInfo.GetCultureInfo("it-IT"))))
In questo modo una pagina in lingua inglese viene riscritta come http://www.miosito.com/it/pagina.aspx ed un pagina in lingua inglese come http://www.miosito.com/en/pagina.aspx.
Il problema di questa tecnica nasce nel momento in cui alcune pagine appartengono a direttori il cui accesso è limitato dall' "access rules" standard, aggiungendo quindi al direttorio un file web.config simile al seguente che permette l'accesso al solo ruolo "Admin":
<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>
Pertanto l'url http://www.miosito.com/direttorio/pagina.aspx viene reindirizzato alla pagina di login a meno che l'utente non sia identificato ed appartenente al ruolo Admin.
Se però l'indirizzo diventa http://www.miosito.com/it/direttorio/pagina.aspx, ovvero l'indirizzo riscritto dal routing, la limitazione imposta nel web.config sembra non funzionare ed è possibile accedere alla pagina protetta!
Per prevenire questo fenomeno è sufficiente aggiungere al web.config principale del sito:
<location path="it/direttorio">
        <system.web>
            <authorization>
                <allow roles="Admin"/>
                <deny users="*" />
            </authorization>
        </system.web>
    </location>

    <location path="en/direttorio">
        <system.web>
            <authorization>
                <allow roles="Admin"/>
                <deny users="*" />
            </authorization>
        </system.web>
    </location>

Esecuzione di file SQL di grandi dimensioni in MS SQL SERVER

L'esecuzione di file SQL di grandi dimensioni mediante un procedimento di copia/incolla diretto del contenuto del file nella finestra di esecuzione delle query in MS SQL Server Management, non è possibile.

In questi casi è opportuno eseguire il seguente comando in uno script Windows o direttamente nel command line:

SQLCMD -S NOMESERVER\sqlexpress -d MyDatabase -E -i C:\Scripts\MyScriptFile.sql

modificandolo opportunamente.

ASP.NET Ajax client-side framework failed to load su

Improvvisamente e senza alcuna ragione, una mia applicazione su hostforlife.com ha smesso di funzionare correttamente.

La console degli errori di Firefox restituiva il seguente errore:

ASP.NET Ajax client-side framework failed to load
'Sys' is undefined.

esguendo pagine in cui era inserito <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"/>.

Ho risolto il problema aggiungendo nel web.config la seguente sezione:

<handlers> 
    <remove name="WebServiceHandlerFactory-Integrated"/> 
    <remove name="ScriptHandlerFactory"/> 
    <remove name="ScriptHandlerFactoryAppServices"/> 
    <remove name="ScriptResource"/> 
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
</handlers>

PaperCut: software per il controllo delle stampe

PaperCut è un software per la gestione delle stampe che può essere utile a qualsiasi organizzazione, corporate o educational, per ridurre il costo correlato alle operazioni di stampa.

PaperCut permette il controllo delle quote di stampa ed un monitoroggio e reportistica avanzata attraverso una semplice interfaccia web di amministrazione. PaperCut è disponibile in due versione: PaperCut NG (http://www.papercut.com) e PaperCut MF (http://www.papercut-mf.com).

Personalmente mi sono occupato dell'installazione, dell'amministrazione e delle personalizzazioni di PaperCut MF, la soluzione più evoluta di PaperCut che prevede anche l'utilizzo di software embedded e/o l'integrazione di hardware per il controllo di dispositivi multifunzione (MFD). In particolare ho implementato il controllo di multifunzioni Toshiba integrate con lettori Copicode-IP alfanumerici in una rete Windows 2008 Server con cliente Windows Vista PRO.

Questionari online con Google Docs

Google Docs permette di creare semplicemente e gratuitamente questionari online e di gestirne i risultati in tempo reale con la possibilità di esportare i dati nei più diffusi formati. Ogni questionario può essere pubblicato su qualsiasi pagina web, oppure fruito direttamente online da Google Docs.

Per creare un questionario è sufficiente accedere ai documenti di Google e creare un documento di tipo "Form". Sarà poi semplice creare domande a scelta multipla, testuali ecc..

piczard: Image Management Solution For ASP.NET

Circa 3 anni fa ho avuto la fortuna di acquistare un controllo per la manipolazione delle immagini denominato iLoad progettato e sviluppato da Sergio Turolla  un developer Italiano con la "d" maiuscola.

Ho utilizzato iLoad con successo in moltissimi progetti ottenendo risultati altrimenti raggiungibili con molte difficoltà. Quando mi è giunta la notizia che Radactive, la società di Sergio Turolla, avrebbe chiuso i battenti, sinceramente mi sono sentito sconfortato.

Poche volte infatti mi capita di essere estremamente soddisfatto di un acquisto e dell'assistenza fornita: iLoad è un controllo flessibile e robusto; Sergio Turolla è la persona più competente e disponibile cha io abbia mai incontrato.

Fortunatamente però Sergio Turolla ha pensato di offrire alla comunità di sviluppatori ASP.net un nuovo controllo che assomiglia molto nelle funzionalità a iLoad: sto parlando i piczard di cui è possibile scopire le funzionalità al sito http://piczard.com/.

Io sinceramente non l'ho ancora provato ma nel prossimo progetto abbandonerò il tanto amato iLoad per piczard e, conoscendo il suo creatore, sono certo che non me ne pentirò!

Arvixe web hosting

Dopo circa 1 anno di lavoro su hosting e server dedicati di Arvixe mi sembra doveroso riportare la mia esperienza e giudizio.

La prima cosa che mi preme sottolineare è che purtroppo l'assistenza tecnica offerta non è sempre professionale e le risposte fornite sono del tutto inconsistenti con i problemi segnalati. A titolo di esempio ho perso circa 1 mese nella gestione di un ticket che ho aperto per segnalare un problema di licenza su un componente di terze parti che l'assistenza diceva essere installato sul server che ospitava l'applicazione. In realtà si è scoperto che il componente non era installato sul server.

Sempre riguardo l'assistenza, la tempistica di chiusura dei ticket è aumentata in modo considerevole ed oggettivo negli ultimi 2 mesi. Ad oggi mi trovo una richiesta ancora aperto dopo 3 giorni e che sollecito giornalmente.

Se il rapporto caratteristiche/prezzo dei piani di hosting è elevato purtroppo non vale la stessa cosa per il rapporto qualità/prezzo. Così sconglio vivamente i piani "personal" per applicazioni professionali. Considerato il fatto che lo spazio è condiviso con molte altre applicazioni la risposta dei server non è sempre costante ed in alcuni casi la lentezza delle risposte è insopportabile e causa ovviamente errori nelle applicazioni.

Un po' meglio sono i piani "business" anche se ovviamente molto più costosi ma la latenza delle risposte è comunque e soventemente troppo elevata.

Per quanto concerne i database invece, è bene tenere presente che risiedono sullo stesso server che ospita gli hosting e che le connessioni multiple sono limitate.

Un punto a favore di Arvixe è invece la possibilità di configurare lo spazio a proprio piacimento e molto facilmente.

Concludendo il post il mio giudizio su Arvixe è 7 punti su 10.

 

AddThis.NET for Blogengine: DiggButton problem

With reference to AddThis.NET for Blogengine (http://www.mbaldinger.com), I've encountered some problem in DiggButton.cs due to html encoding content of HtmlGenericControl "script" so that DiggButton doesn't appear.
I suggest you to change script.InnerText in script.InnerHtml (line 52)

Connessione ODBC a Zucchetti Gestionale 1 su Windows Server 2008 (64 bit)

La connessione alle tabelle del Gestionale 1 da una applicazione web, può essere ottenuta utilizzando la seguente stringa di connessione

"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=C:\AZW32\DB\100\;

che implica l'utilizzo del driver Microsoft dBASE a 32 bit. Occorre quindi innanzitutto verificare l'installazione del driver sul server eseguendo il comando C:\Windows\SysWOW64\odbcad32.exe.

Se il driver non fosse presente, io consiglio di installare il "Microsoft Access Database Engine 2010 Redistributable" scaricabile da qui.

In ultimo è necessario configurare il sito in IIS in modo che utilizzi un'appliazione in modalità WOW64 (Windows on Windows64), ovvero con processi a 32 bit tramite cui vengono caricate solo applicazioni a 32 bit.

Aprire quindi IIS, identificare l'applicazione utilizzata dal sito nel pool di applicazione e settare a true il valore "Attiva applicazione a 32 bit".

 

P.S.: Non seguendo le istruzioni sopra riportare si potrebbe incorrere nel seguente errore: "ERROR [IM002] [Microsoft] [Driver Manager ODBC] Nome Origine Dati non trovato e driver predefinito non specificato"

Recuperare record cancellati/modificati in SQL SERVER 2008

Può accadere di dover recuperare record cancellati o modificati accidentalmente. In tale occasione può essere utile conoscere i formidabili prodottti di ApexSQL tra cui ApexSQL Log.

Io ho utilizzato con successo la versione trial del software scaricabile gratuitamente dopo aver completato un form di registrazione.

Il recupero nella versione trial è limitato a 10 record alla volta.