Wie lade ich eine Datei auf einen WCF-Dienst hoch?
-
09-06-2019 - |
Frage
Ich habe einen WCF-Dienst erstellt, um eine Datei zu akzeptieren und auf die Festplatte zu schreiben.Das Frontend besteht aus einer Seite mit SWFUpload, die den Upload auf Client-Seite übernimmt.Anscheinend veröffentlicht SWFUpload die Daten mit einem Inhaltstyp von:Multipart-/Formulardaten.
Ich denke, das ist in Ordnung, aber auf der Serviceseite erhalte ich eine Fehlermeldung.Der Fehler ist „ProtocolException“ und erwartet Text/XML.Ich habe verschiedene Nachrichtenkodierungen in den Bindungen ausprobiert, aber nichts scheint zu funktionieren.
Wie kann ich diese Datei mithilfe von Multipart/Formulardaten hochladen lassen?
Lösung
@jdiaz,
@JasonS hat recht, um eine Datei hochzuladen, müssen Sie sie als Bytestream übertragen.Sie müssen verwenden WCF-Streaming.Informationen zum Hochladen einer Datei über WCF finden Sie beispielsweise unter ein Artikel aus http://kjellsj.blogspot.com
Andere Tipps
Was Sie verwenden möchten, ist wahrscheinlich MTOM, wenn Sie möchten, dass es Standard ist.Auf diese Weise können Sie mehrteilige MIME-Nachrichten erstellen.
Anschließend müssen Sie die Datei als Stream lesen und in einen der Parameter der Anfrage einfügen.
Es kann sein, dass Ihr WCF-Dienst auf .NET Framework 3.5 abzielt und Ihr IIS auf .NET Framework 4.0 ausgeführt wird.In diesem Fall (Framework-Nichtübereinstimmung) müssen Sie Ihren Dienst ändern.
Ich glaube, Sie müssen die Datei als Byte-Array an WCF übertragen.Sie müssen den Beitrag von SWFUpload verarbeiten und in ein Byte-Array konvertieren, bevor Sie ihn an Ihren Dienst senden.