2012-04-24 10 views
23

Ich bekomme die folgenden intermittierenden Fehler im Zusammenhang mit der Abfrage AD mit DirectorySearcher.FindOne() oder FindAll().System.DirectoryServices.DirectorySearcher verursacht "Arithmetische Operation führte zu Überlauf" Fehler

Dies geschieht in einer Web-App und scheint zu passieren, nachdem die App für mehrere Stunden ausgeführt wurde.

Dies ist ein documented issue auf Microsoft Connect, aber es sieht aus wie es als "nicht reproduzierbar" markiert und geschlossen wurde.

Die einzige Lösung, die ich gefunden here gefunden habe, ist die App Pool regelmäßig zu recyceln, die eine harte Workaround und nicht praktikabel ist, wenn Ihre Benutzer mitten in der Arbeit sind.

Hat jemand dies erlebt und wenn ja, wie wurde das gelöst?

Ich habe versucht, Caching zu verwenden, aber dies verzögert nur das Unvermeidliche, bis Sie eine bestimmte Schwelle in Bezug auf die Anzahl der AD-Aufrufe erreicht haben, da die Leute berichtet haben, dass bei jedem API-Aufruf leaks memory.

Jede Hilfe würde sehr geschätzt werden.

+0

Ich habe genau das gleiche Problem, und sind zu dem gleichen Schluss gekommen, dass Microsoft dies noch nicht anerkannt und eine Lösung bieten. Der einzige andere Leckerbissen, den ich Ihnen zur Verfügung stellen kann, ist der Vorschlag, Ihre Passwort-Altersrichtlinie wie hier beschrieben zu lesen: http://social.technet.microsoft.com/Forums/en-US/scoscip/thread/c8929889-9e7f-427f-bb89 -1464b2c68d49/ –

+1

Das eigentliche Problem in meinem Fall war nicht im Zusammenhang mit AD so viel wie ein Problem in der MS-Enterprise-Bibliothek basierten Datenzugriffscode, der Speicherverluste verursacht, die wiederum Probleme mit der Speicherzuweisung in AD-Lookup-Code verursacht. –

+0

Das ist interessant, da wir die Enterprise-Bibliothek für nichts verwenden. Ich denke, es ist möglich, dass wir ein anderes Speicherleck haben und AD braucht nur so viel Speicher? Können Sie mir mitteilen, ob Sie IIS im 64- oder 32-Bit-Modus verwenden? –

Antwort

1

Erstellen Sie eine AD-API und führen Sie sie in ihrem eigenen App-Pool aus. Das recyceln, dass alle paar Stunden. Die gesamte API behandelt Aufrufe von AD. sieht so aus, als hättest du den Code bereits, musst nur zur API wechseln. Ich habe eine AD API gefunden, die auch für viele andere Projekte sehr nützlich ist und immer wieder als Referenz verwendet wird.

Verwandte Themen