2013-01-22 12 views
8

Sto cercando di impostare il percorso di un cookie, ma io sono sempre riceve l'errore:CookieException con CookieContainer: La parte 'percorso' del cookie è valido

CookieException: The 'Path'='/applogin' parte del cookie è valido.

il codice simile a questo:

Cookie newCookie = new Cookie("JSESSIONID", session.SessionId, "/applogin", "domain.com"); 
newCookie.Secure = true; 
webRequest.CookieContainer.Add(new Uri(@"https://domain.com"), newCookie); 

l'eccezione è poi throwen sull'ultima riga ... qualcuno mi può puntare nella giusta direzione?

risposta

0

In alcuni browser, il percorso è sensibile al maiuscolo/minuscolo. Assicurati che tutti i riferimenti a "/ applogin" corrispondano esattamente al caso.

http://msdn.microsoft.com/en-us/library/ms178194%28v=vs.85%29.aspx

+1

Il percorso dell'URL è * sempre * sensibile al maiuscolo/minuscolo. – Gumbo

+1

I server Web Windows non fanno distinzione tra maiuscole e minuscole mentre Linux/Unix fanno distinzione tra maiuscole e minuscole. Questo perché il file system di Windows non fa distinzione tra maiuscole e minuscole mentre Linux/Unix fa distinzione tra maiuscole e minuscole. Tuttavia, quando si esegue una richiesta di cookie, il browser non invia mai il percorso del cookie al server, lo confronta con ciò che il server restituisce dalle coppie nome/valore. Credo che tutti i browser siano sensibili al caso, ma non ne sono sicuro. –

+0

I percorsi URL non fanno distinzione tra maiuscole e minuscole, indipendentemente da come un server Web decide di associare i percorsi URL ai percorsi del file system. – Gumbo

8

Nel tuo caso si dispone di due URL: uno è un https://domain.com e la seconda uno è un https://domain.com/applogin. Supponiamo che CookieContainer contenga il tuo cookie per percorso/applogin. Ciò significa che se cercherete di recuperare l'elenco dei cookie per l'url https://domain.com/applogin - otterrete un cookie. Se cercherete di recuperare i cookie per l'url https://domain.com - otterrete 0 cookies.

Ora diamo un'occhiata al tuo campione. Hai un cookie per https://domain.com/applogin e stai cercando di aggiungerlo a CookieContrainer per l'url https://domain.com. CookieContainer verifica che questo cookie non possa essere utilizzato per URL specifici, poiché si trattava di problemi relativi a URL diversi. Nel tuo caso è necessario cambiare linea in cui si aggiunge biscotto:

webRequest.CookieContainer.Add(new Uri(@"https://domain.com/applogin"), newCookie); 

O Credo che si desidera utilizzare questo cookie per tutta domain.com - allora avete bisogno di cambiare come lo si crea per

Cookie newCookie = new Cookie("JSESSIONID", session.SessionId, "/", "domain.com"); 
Problemi correlati