Stiamo ospitato su AppHarbor e usando il loro memcacher add-on, l'installazione come descritto nella loro documentazione:ASP.NET Cookieless Session URL Problema SOLO in Safari Mobile
<sessionState cookieless="false" regenerateExpiredSessionId="true" mode="Custom"
customProvider="MemcachedSessionProvider" xdt:Transform="Insert">
<providers>
<add name="MemcachedSessionProvider"
type="MemcachedProviders.Session.SessionStateProvider,MemcachedProviders"
dbType="none" />
</providers>
</sessionState>
Stiamo assistendo ad un problema che può essere riprodotto solo da:
- a seguito di un Twitter accorciato URL appfail.net all'interno iOS Safari (o l'applicazione Twitter per iPhone di in-built del browser webkit): http://t.co/6tRXopEJ
- Fare clic sul pulsante nostra 'Run Demo', w quindi firma automaticamente l'utente con il nostro account demo.
A questo punto il server emette un 302 reindirizzare a un URL non valido, ad esempio: http://appfail.net/(F(FckQ4UX0zD_WSxk_adpkk3YysHsYQS4TSVpljxmswyBqEAZ1q-YhW4KePrpYQfJ4KlLGaiyje_TbpeSARVyI8LioQ7Jp5EIc0Zm9u99IqRRkkoMh_wr-jrsrvje4J7KpUt1n87xEMzMeqHzpMz9ksm42IqNnf3F9B6GBwrnuA5EY_YsV0))/Applications
L'url sembra contenere un SessionID, nello stesso formato utilizzato da IIS per le sessioni senza cookie. Ciò avrebbe anche senso, dal momento che IIS può essere configurato per utilizzare i cookie senza sessione basati su UserAgent - da qui il motivo per cui si riproduce solo in Safari mobile (anche se non sono sicuro del motivo per cui accade solo con il reindirizzamento t.co/ e non quando caricando la pagina direttamente)
La cosa strana è che abbiamo sessioni senza cucina disattivate! Come puoi vedere nello stato della sessione sopra. Ho provato anche questo con l'impostazione 'cookieless = "UseCookies"' ... Nessuna fortuna!
Ho aggiunto la registrazione e ho anche verificato che il sistema sia configurato come "UseCookies" durante l'esecuzione.
Quindi, mi chiedo come possiamo reindirizzare gli utenti a un URL senza cookie, usando semplicemente RedirectToAction()?
Mi chiedo se questo potrebbe essere correlato al provider di stato sessione personalizzato - MemcachedProvider? O è qualcosa di più semplice?
Grazie Sam
Hai provato a mollare il MemcachedProvider e a eseguire un sito di prova su un solo lavoratore per vedere se riesci a riprodurlo? – friism