Ich habe gerade meine kleine Webapp auf meinem bescheidenen dedizierten Server (Win2003) gestartet ... mit ASP.NET MVC, LINQ2SQL, SQL Express 2005 und IIS6 (Setup mit Platzhalter Zuordnung )
Die Website läuft zu 90% reibungslos. Bei relativ hohem Datenverkehr gibt LINQ2SQL jedoch den Fehler aus: Der angegebene Cast ist nicht gültig.
Dieser Fehler wird NUR bei hohem Datenverkehr ausgelöst. Ich habe KEINE IDEE wie oder warum genau das passiert. Caching hat dieses Problem nicht vollständig behoben.
Wer hat dieses Problem schon einmal gesehen? Gibt es irgendwelche geheimen SQL Server Optimierungen, die ich hätte tun sollen? Oder zumindest irgendwelche Ideen zur Diagnose dieses Problems? weil ich raus bin!
Naimi
Stacktrace (aus dem Ereignisprotokoll):
%Vor%Wir hatten ein ähnliches Problem mit LINQ, das wir bekommen "Kann Objekt vom Typ 'System.Int32' nicht umwandeln, um 'System.String'" und 'Angegebene Umwandlung ist ungültig' einzugeben.
Beispiele für Stacktraces
%Vor%Wir haben diese Ausnahmen erhalten, wenn wir zuerst eine Ausnahme wie diese bekommen "System.InvalidOperationException: Es gibt bereits einen offenen DataReader, der diesem Befehl zugeordnet ist, der zuerst geschlossen werden muss." oder "Beim Empfangen von Ergebnissen vom Server ist ein Transport-Level-Fehler aufgetreten. (Provider: TCP-Provider, Fehler: 0 - Eine bestehende Verbindung wurde vom Remote-Host zwangsweise geschlossen.)".
Die erste Ausnahme tritt für eine andere Instanz von DataCOntext dann für alle auf, die dann folgen.
Nach einigen Nachforschungen und Fragen in diesem thread , ich fand, dass der Grund dafür war, dass ich die DataContexte nicht entsandte. Nachdem ich damit angefangen habe, ist es verschwunden.
Klingt wie eine Race Condition, oder vielleicht ein seltener Bug, der nur korreliert mit hohem Traffic ist, weil das, wenn die meisten Ihrer Anfragen auftreten.
Tags und Links asp.net-mvc linq-to-sql sql-server-2005 iis-6