Quest'oggi debuggando un po' alcune pagine web che fanno pesante uso del routing, io e ci siamo resi conto di un problemino che ne affligge l'uso. Pare che se gli url terminano con .aspx (e questo era proprio il nostro caso), non ci sia modo di vedere inizializzato il contesto della pagina. Il sintomo primario di questo comportamento è dato dalla mancata esecuzione degli handler nel global.asax, ma nel nostro caso si è rivelato perchè ci siamo trovati difronte alla mancanza completa di Session e ViewState.

In rete si trovano alcuni post su questo problema, primo fra tutti quello su StackOverflow:

http://stackoverflow.com/questions/218057/httpcontext-current-session-is-null-when-routing-requests

Pare che l'unico workaround conosciuto a questo problema sia relativo l'uso di una estensione conosciuta a IIS e conseguentemente mappata sull'handler di asp.net, oppure l'uso del wildcard mapping (ovvero tutto passa per asp.net).

Nel nostro caso l'applicazione stava girango su Vista con IIS7 e non abbiamo indicazioni in merito al problema su IIS6 o su un server di produzione, ma per fortuna non siamo arrivati fino a li... :)

Va detto che ci siamo resi conto del problema con qualche difficoltà per il semplice motivo che nel contesto in cui stiamo lavorando abbiamo escluso per quanto possibile l'uso di session e viewstate (si tratta di una applicazione mobile), perciò credo che lavorando su pagine normali questo problema sarebbe emerso molto più facilmente.

Technorati Tag: ,,

Commenti (1) -

# | Gian Maria | 10.04.2009 - 18.15

Ci ero passato anche io, cosa che mi aveva fatto immediatamente bypassare l'idea di routare per un classico aspx. Quando uso il routing nelle mie applicazioni, per evitare problemi uso sempre l'estensione ashx, oppure molto spesso mappo la zip con cui faccio restituire report in docx, pdf, etc.

alk.

Aggiungi Commento