Categorie
Argomenti Avanzati Software

Malefico HTTP 500 internal server error

Salve a tutti,

oggi volevo raccontarvi di come essere consulente, sviluppatore, architetto e sistemista possa portare alla quasi pazzia un povero essere umano.

Venerdì dovevo compilare dei rapportini per un cliente e, come da un paio di mesi a questa parte, non riuscivo più a connettermi al suo portale web.

Il messaggio che ricevevo ancora prima di poter fare il login era:

HTTP 500 internal server error

Nulla di più, un semplice e criptico messaggio di errore che faceva presumere che vi fosse un errore sul server a cui mi connettevo.

Purtroppo utilizzando un altro PC riuscivo a connettermi e quindi non potevo nemmeno sollevare il problema, essendo evidente che fosse il mio PC la causa dell’errore.

Dopo svariati tentativi trovo finalmente un santo che mi aiuta, Luciani Massimiliano, che nell’articolo ASP: HTTP 500 internal server error mi permette di scoprire un’opzione avanza di Internet Explorer, Mostra messaggi di errore HTTP brevi, che provvedo subito a disabilitare.

Finalmente vedo una piccola luce ed il messaggio diventa:

Microsoft Cursor Engine error ‘80040e21’

Multiple-step operation generated errors. Check each status value.

/LM/W3SVC/1/Root/Rapportini/global.asa, line 72

Nulla di più chiaro no?

Ora inizia la caccia, prendo ogni parola di questo messaggio e mi tuffo in Google alla spasmodica ricerca della soluzione…

Alla fine nulla o quasi nulla…

Riesco solo a capire che sul server il codice sta cercando di aggiornare un campo sul database e probabilmente sta inserendo un dato troppo lungo. Ma quale dato? Cosa succede nella semplice chiamata che Internet Explorer deve fare per riuscire a generare un errore così criptico?

Capisco che la rete non mi può più aiutare, devo far ricorso alla mia anima di sviluppatore e di analista, così cambio strategia e decido: si debugga la chiamata HTTP.

Così con un po’ di pazienza trovo un tool per tracciare le chiamate HTTP, prendo lo stream di uscita dal mio PC e quello di uscita dal PC di controllo, quello funzionante.

Cosa scopro? L’unico dato differente, quindi l’unica informazione che in qualche modo può fare la differenza è il dato User-Agent !!!

Quello del mio PC era:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ;  Embedded Web Browser from: http://bsalsa.com/; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; FDM; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)

Insomma, una stringa da 340 caratteri che risultava ingestibile dal server al quale chiedevo di connettermi.

Allora mi attivo e cancello subito le chiavi del registro di Windows in modo da riportare la stringa a dimensioni ragionevoli e finalmente posso compilare senza problemi i miei rapportini.

Cosa era accaduto? Che il progetto al quale sto lavorando richiedeva l’installazione di molto software, tale installazione ha allungato la stringa User-Agent del mio browser in modo eccessivo e questo mi impediva di compilare i rapportini. Come dire che il cliente senza volerlo mi stava facendo lavorare… gratis!!!

Questo vi fa capire quanto sia dura la vita del consulente 🙂

Sostieni il blog con una piccola donazione! Grazie!