Ich arbeite an University Management System, auf dem ich einen WCF-Dienst verwende und in dem Dienst verwende ich DataTables und DataSets zum Abrufen von Daten aus Datenbank und Datenbank ist SQL Server.
Meine Fragen sind
Das Zurückgeben von Datensätzen aus Webdiensten wird normalerweise nicht als "gute Praxis" betrachtet. Die Probleme wurden ausführlich in den folgenden Links dokumentiert:
Zusammenfassend scheinen die größten Probleme bei der Rückgabe von DataSet
-Objekten von Web-Services die Serialisierungsleistung und die Nicht-Net-Interoperabilität zu betreffen. Darüber hinaus erhöht die generische, polymorphe Natur von DataSet
die Datenstruktur im Allgemeinen bis zur Laufzeit, sodass die WSDL-Definition keine vollständige Beschreibung der Methodensignatur bereitstellt. Wie bei jeder Design-Entscheidung müssen Sie jedoch die Kosten gegenüber den Vorteilen abwägen und die beste Anpassung anhand Ihrer spezifischen Ziele und Einschränkungen bestimmen.
Im Hinblick auf Alternativen könnten Sie eine generische Sammlung (z. B. List<yourClassHere>
) in Betracht ziehen oder vielleicht sogar einige Revisionen der Architektur in Erwägung ziehen, um die Verwendung von ODATA zu ermöglichen.
Die folgenden Links bieten eine gute Hintergrundreferenz für die Rückgabe von Entitäten über Webdienste. Ссылка Ссылка Ссылка
Es gibt drei Gründe für einen fehlgeschlagenen Rückgabetyp als datatable
in WCF-Diensten
Sie müssen den Datentabellennamen wie folgt angeben:
%Vor% Wenn Sie einen Verweis auf der Clientseite des WCF-Dienstes hinzufügen, wählen Sie die wiederverwendbare DLL system.data
Geben Sie das Attribut für datatable
-Member-Variable wie
Ich verwende DataTable
in meiner WCF-Anwendung, aber es wurde ein Fehler angezeigt. So habe ich den Fehler behoben.
Beim Zurückgeben einer DataTable von einem Webdienst in WCF an die Windows-Formularanwendung. Ich habe diese Ausnahme bekommen.
System.ServiceModel.CommunicationException: 'Beim Empfangen der HTTP-Antwort an Ссылка ist ein Fehler aufgetreten. Dies könnte daran liegen, dass die Service-Endpunktbindung das HTTP-Protokoll nicht verwendet. Dies kann auch daran liegen, dass ein HTTP-Anforderungskontext vom Server abgebrochen wird (möglicherweise aufgrund des Herunterfahrens des Dienstes). Weitere Informationen finden Sie in den Serverprotokollen. '
Es ist jedes Mal passiert, dass ich versucht habe, DataTable
Um die Ausnahme zu beheben, musste ich der DataTable
einen Namen geben.
Code mit dem Fehler
%Vor%Korrigiert Code, um die Ausnahme zu entfernen
%Vor%