2010-12-30 7 views
0

Ich bin ein wenig grün, wenn es um Streaming und Serialisierung geht ... aber was ich tun möchte ist, dass die Upload-Methode auf dem Server ein serialisierbares Objekt an den Client zurückgibt (es ist jetzt ungültig).Serialisierbares Objekt aus FileStream zurückgeben?

Ich habe eine öffentliche Klasse ServiceResult, die ich mit [Serializable] dekorieren und eine FileTransferService öffentliche Klasse, die IFileTransferService implementiert

[ServiceContract()] 
public interface IFileTransferService 
{ 
    [OperationContract(IsOneWay = false)] 
    string Upload(FileTransferRequest request); 
} 

Die Umsetzung macht seine Sache, und dann am Ende ich schaffen und serialisiert das Objekt und versucht, die Zeichenfolge

return ServiceResultSerializer.SerializeAnObject(result); 

auf der Clientseite zurückzukehren nenne ich diesen Dienst mit dieser Klasse

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] 
[System.ServiceModel.ServiceContractAttribute(ConfigurationName = "IFileTransferService")] 
public interface IFileTransferService 
{ 

    // CODEGEN: Generating message contract since the wrapper name (FileTransferRequest) of message FileTransferRequest does not match the default value (Upload) 
    [System.ServiceModel.OperationContractAttribute(IsOneWay = false, Action = "http://tempuri.org/IFileTransferService/Upload")] 
    string Upload(FileTransferRequest request); 
} 

Ich bin im Grunde dieses Projekt in diesem Blog finden unter: http://weblogs.asp.net/cibrax/archive/2007/08/29/sending-attachments-with-wcf.aspx

und zu versuchen, einen Wert zu machen zurückgeben, dass der Client Anrufer

verwenden kann ich einen Fehler jetzt bekommen, das sagt:

Die Operation 'Upload' konnte nicht geladen werden, da sie einen Parameter oder Rückgabetyp vom Typ System.ServiceModel.Channels.Message oder einen Typ mit MessageContractAttribute und anderen Parametern unterschiedlichen Typs aufweist. Wenn Sie System.ServiceModel.Channels.Message oder Typen mit MessageContractAttribute verwenden, darf die Methode keine anderen Arten von Parametern verwenden.

Was ich habe keine Ahnung, was es bedeutet: P Ich denke, weil ich versuche, die Service-Parameter zu ändern.

Tut mir leid, wenn ich zu allgemein bin - jede Hilfe wäre sehr willkommen.

+0

Ich glaube, es fehlt etwas in Ihrem geposteten Code. Wo ist deine 'ServiceResult' Klasse die du erwähnt hast? Wie lautet die Definition von 'FileTransferRequest'? – Jacob

Antwort

1

Es klingt für mich wie Ihre FileTransferRequest Klasse MessageContractAttribute angewendet hat.

Da Ihr Eingabeparameter MessageContractAttribute lautet, sollte Ihr Antworttyp auch MessageContractAttribute haben, was String nicht tut. Versuchen Sie, eine FileTransferResponse-Klasse zu erstellen, die eine einzelne Eigenschaft vom Typ string aufweist, und diese als Rückgabetyp zu verwenden.

Verwandte Themen