2012-04-24 14 views
23

I seguenti errori intermittenti si riferiscono alle query su AD utilizzando DirectorySearcher.FindOne() o FindAll().System.DirectoryServices.DirectorySearcher che causa errori "Operazione aritmetica ha comportato errori di overflow"

System.OverflowException: Arithmetic operation resulted in an overflow. 
    at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.GetCurrentResult() 
    at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.get_Current() 
    at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.System.Collections.IEnumerator.get_Current() 

Questo sta accadendo in una web app e sembra succedere dopo che l'app è stata in esecuzione per diverse ore.

Questo è un documented issue su Microsoft Connect ma sembra che sia stato contrassegnato come "non riproducibile" e chiuso.

L'unica correzione che ho trovato here consiste nel riciclare periodicamente il pool di app che è una soluzione piuttosto dura e non praticabile quando gli utenti si trovano nel bel mezzo del lavoro.

Qualcuno ha provato questo e, in caso affermativo, come è stato risolto?

Ho provato ad utilizzare il caching ma questo ritarda solo l'inevitabile fino a quando non si raggiunge una certa soglia in termini di numero di chiamate AD da quando le persone hanno segnalato che ogni volta che la chiamata API viene effettuata è leaks memory.

Qualsiasi aiuto sarebbe molto apprezzato.

+0

Ho esattamente lo stesso problema e sono giunto alla stessa conclusione che Microsoft deve ancora riconoscere questo e fornire una soluzione. L'unico altro bocconcino che posso fornire è il suggerimento di esaminare la tua politica sull'età della password come indicato qui: http://social.technet.microsoft.com/Forums/en-US/scoscip/thread/c8929889-9e7f-427f-bb89 -1464b2c68d49/ –

+1

Il vero problema nel mio caso non era correlato ad AD tanto quanto un problema nel codice di accesso ai dati basato sulla libreria aziendale MS che causava perdite di memoria che a loro volta causavano problemi con l'allocazione della memoria nel codice correlato alla ricerca di annunci. –

+0

Ciò è interessante, poiché non usiamo la libreria aziendale per nulla. Immagino sia possibile che ci sia un'altra perdita di memoria e AD ha solo bisogno di tanta memoria? Puoi dirmi se stavi utilizzando IIS in modalità 64 o 32 bit? –

risposta

1

Creare un'API AD ed eseguirla nel proprio pool di applicazioni. Il riciclo che ogni poche ore. Tutte le API gestiranno le chiamate ad AD. sembra che tu abbia già il codice, devi solo passare all'API. Ho trovato che un'API AD è molto utile anche per molti altri progetti e continua a tornare ad essa come punto di riferimento.

Problemi correlati