Ich versuche, einen WCF-Streaming-Dienst zu erstellen. Ich habe zwei Anforderungen, über die ich zu stolpern scheine, um dies zum Laufen zu bringen:
- Größe des Stream-Streams
- Eingabeparameter
Mein Nachrichtenvertrag sieht so aus:
[MessageContract]
public class MyStream
{
[MessageHeader]
public long StreamSize;
[MessageBodyMember]
public Stream StreamData;
}
Mein Operationsvertrag sieht so aus:
[ServiceContract]
public interface IStreamService
{
[OperationContract]
MyStream GetData(string data);
}
Die Fehlermeldung, die ich erhalte, wenn ich versuche, den Webdienst zu nutzen, lautet wie folgt:
Die Operation "GetData" konnte nicht geladen werden, da sie einen Parameter oder einen Rückgabetyp vom Typ System.ServiceModel.Channels.Message oder einen Typ hat, der MessageContractAttribute hat und andere Parameter unterschiedlicher Typen hat. Wenn System.ServiceModel.Channels.Message oder Typen mit MessageContractAttribute verwendet werden, darf die Methode keine anderen Arten von Parametern verwenden.
Nach meinem Verständnis von diesem Beitrag muss ich einen Nachrichtenvertrag verwenden, um die Länge meines Streams zu erhalten, aber wenn ich von einem Datenauftrag zu einem Nachrichtenvertrag wechsle, darf ich keine Eingabeparameter mehr übergeben.
Gibt es eine Konfigurationsänderung, die mir fehlt? Oder etwas anderes, das ich versuchen kann? Vielen Dank!