2012-02-01 18 views
5

Ho implementato l'autenticazione ADFS per un'applicazione asp.net 4.0. Ho ospitato l'applicazione nell'ambiente di produzione con la configurazione webfarm. Il sito web funziona bene e tutte le immagini sono visualizzate correttamente nel browser IE8. Ma quando ho provato a navigare nell'applicazione nel browser Safari, il sito Web non funziona alcune volte e anche le immagini non sono visualizzate correttamente.Fine del file inaspettata. I seguenti elementi non sono chiusi: Cookie, SecurityContextToken. Linea 1, posizione 2998

Utilizzando Fiddler ho trovato che la volte che le immagini non sono resi correttamente e viene fornito con il seguente errore:

Exception information: 
Exception type: XmlException 
Exception message: Unexpected end of file. Following elements are not closed: Cookie, SecurityContextToken. Line 1, position 2998. 

Thread information: 
    Thread ID: 12 
    Thread account name: CT\acmeweb 
    Is impersonating: False 
    Stack trace: at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3) 
    at System.Xml.XmlExceptionHelper.ThrowUnexpectedEndOfFile(XmlDictionaryReader reader) 
    at System.Xml.XmlBaseReader.MoveToEndOfFile() 
    at System.Xml.XmlUTF8TextReader.Read() 
    at System.Xml.XmlDictionaryReader.ReadContentAsChars(Char[] chars, Int32 offset, Int32 count) 
    at System.Xml.XmlBaseReader.ReadBytes(Encoding encoding, Int32 byteBlock, Int32 charBlock, Byte[] buffer, Int32 offset, Int32 byteCount, Boolean readContent) 
    at System.Xml.XmlBaseReader.ReadContentAsBase64(Byte[] buffer, Int32 offset, Int32 count) 
    at System.Xml.XmlDictionaryReader.ReadContentAsBytes(Boolean base64, Int32 maxByteArrayContentLength) 
    at System.Xml.XmlDictionaryReader.ReadContentAsBase64(Int32 maxByteArrayContentLength, Int32 maxInitialCount) 
    at System.Xml.XmlBaseReader.ReadContentAsBase64() 
    at System.Xml.XmlDictionaryReader.ReadElementContentAsBase64() 
    at Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver) 
    at Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(Byte[] token, SecurityTokenResolver tokenResolver) 
    at Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie(Byte[] sessionCookie) 
    at Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken) 
    at Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs) 
    at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

Allora ho provato a seguire il link indicato qui sotto:

http://social.msdn.microsoft.com/Forums/en/Geneva/thread/ea00ec3f-ebdf-427c-929f-d4a196650552

Ma non ha funzionato anche per me. Ho quindi provato a fermare un server nella configurazione di webfarm e ho scoperto che il sito Web funziona perfettamente con IE8 e il browser Safari. Nel browser IE8 funziona sempre e tutte le immagini sono visualizzate correttamente, ma il browser Safari non funziona nel caso in cui entrambi i server della webfarm siano accesi.

In base all'analisi, ho scoperto che da ADFS ricevo alcune informazioni sui sinistri sotto forma di cookie e la lunghezza dei cookie è maggiore. Per il browser IE8 la lunghezza del cookie è maggiore e per Safari il limite consentito è 4097 caratteri.

Quindi ho pensato di massimizzare il limite del cookie per il browser Safari.

Qualcuno può darmi una mano per risolvere questo problema fornendo qualsiasi esempio di codice.

Grazie & saluti, Santosh Kumar Patro

+0

Quindi la tua domanda effettiva è "Come posso aumentare il limite dei cookie di Safari dal limite predefinito di 4097 caratteri?" –

+0

Il problema inizia con la dimensione limitata del cookie nel browser Safari e, a causa di ciò, il rendering dell'immagine si interrompe e il problema sopra citato entra in scena. Quindi c'è un modo per risolvere questo problema. Inoltre, il problema entra in scena nello scenario webfarm e solo per il browser Safari. –

risposta

2

Il problema viene ora risolto dalla attivazione dei cookie persistenti (appiccicoso Sessions) di bilanciamento del carico nello scenario webfarm.

1

Ho gestito questo problema riducendo il numero di attestazioni restituite da STS. Questo ridurrà la dimensione del cookie. Ho dedotto un altro mezzo per afferrare i dati di cui avevo bisogno tramite un servizio che ho implementato.

Problemi correlati