Ich habe einen WCF-Endpunkt, der Daten zurückgibt, die von einer Datenbank abgefragt werden. Für einen bestimmten Anruf weiß ich zum Beispiel, dass ich 175 Einträge erhalten soll. Aber mein WCF-Code gibt immer nur 105 Datensätze zurück. Ich bin in Lage, die erwarteten 175 Datensätze zu erhalten, indem Sie die gespeicherte Back-End-Prozedur ausführen, die die Endpunktfunktion ausführt. Wenn ich mich mit dem WCF Test Client mit dem Endpunkt verbinde, erhält es auch 175 Datensätze.WCF-Aufruf in Code gibt nicht alle erwarteten Daten zurück
Ich habe viele Dinge ausprobiert (Bindings, Readerquotas, Fiddler, etc ändern), konnte aber nicht feststellen, was in meinem Code anders ist. Grundsätzlich ist mein Code für den Test eine Winforms-App, die einen Service-Verweis auf den Endpunkt hat. Ich erhöhe die maxReceivedMessageSize auf 655360000 in meiner app.config, weil die Größe der Daten groß ist. Ich verwende WSHttp als meine Bindung. Unten ist der Code, der den Anruf und gibt die 105 Datensätze ausführt:
var client = new MyDataClient("WSHttpBinding_IMyData");
var data = client.GetMyDataByDateRange("Location123", DateTime.Now.Date, DateTime.Now.Date).ToList();
MessageBox.Show(string.Format("Got {0} records", data.Count)); // always 105
Irgendwelche Ideen, warum Satz ein falsches Ergebnis zurückkehren würde meinen Code?
Haben Sie versucht, einen Profiler in Ihrer Datenbank auszuführen, um zu sehen, wie der Abfrageaufruf erfolgt, wenn Sie Ihren WCF-Dienst über die Winforms-App aufrufen? – Rajesh
@Rajesh Ich habe keinen Datenbank Profiler benutzt ... und leider habe ich hier keine Erlaubnis um mich gegen die DB zu profilieren. – DougEC
Die beste Option besteht darin, einige Protokollierungsanweisungen einzufügen, kurz bevor der Aufruf der Datenbank erfolgt, die alle Parameter erfasst und überprüft, ob sie vom WCF-Testclient und Ihrer Windows-Formularanwendung – Rajesh