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
Dans mon Ihm :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 }
Ma méthode de la couche business (appelée par le service WCF)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
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!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 }
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![]()
Partager