[WCF] - méthodes et objets Stream
Bonjour à tous.
Voici le contexte : j'ai une application 3 couches avec les couche Business et UI reliées via des services WCF. Jusque là logique.
Je dois, depuis mon appli, pouvoir uploader des fichiers en base de données.
J'extrais donc le contenu de mon fichier local dans un objet de type stream, que j'envoie via un service dans les couches inférieures qui vont se charger d'enregistrer le contenu de ce flux en base.
J'ai un objet qui contient les informations du fichier à sauvegarder
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
[KnownTypeAttribute(typeof(FileStream))]
public class FileToSave
{
#region Constructors
public FileToSave()
{
}
#endregion
#region Properties
[DataMember]
public string Nom { get; set; }
[DataMember]
public Stream Data { get; set; }
#endregion
} |
Dans mon Ihm :
Code:
1 2 3 4 5 6
|
FileToSave myFile = new FileToSave();
myFile.Nom = "toto.txt"
myFile.Data = new FileStream("C:\toto.txt", FileMode.Open);
ProxyWcfCommun.ServiceClient.SaveFile(myFile); |
Ma méthode de la couche business (appelée par le service WCF)
Code:
1 2 3 4 5
|
public static void SaveFile(FileToSave myFile)
{
//Ici sera implémenter le traitement pour récupérer à partir du stream le tableau de Byte correspondant pour l'enregistrement en base
} |
Or le problème est que dans cette dernière méthode, ma propriété myFile.Data semble mise à vide, comme si la serialization du stream avait mal fonctionnée. Dès que j'appelle la méthode read (myFile.Data.Read(...)), je me prends une nullReferenceException. Attention, ce n'est pas mon objet myFile qui est null!
Ma config WCF :
Binding : netTcpBinding
TransferMode : Buffered (j'ai lu qu'il n'y avait pas forcément besoin d'avoir un TranferMode de type Stream*)
Si vous avez des pistes, je suis preneur merci :)